错误提示
TypeError: can't access dead object
错误类型
哪里出错了?
为了提高内存使用效率以及防止内存泄露,Firefox 浏览器不允许插件在 DOM 所在的父页面被销毁后对 DOM 对象保持强引用。死对象指的是在 DOM 被销毁后依然持有对 DOM 元素的强引用(处于活跃状态)。为了避免这样的问题,对处于外部文档中的 DOM 节点的引用应该被存储于一个专属于那个文档的对象当中,并且在文档卸载的时候将其清理,或者使用弱引用方式进行存储。
Checking if an object is dead
Components.utils offers a isDeadWrapper()
method, which privileged code might use.
if (Components.utils.isDeadWrapper(window)) { // dead }
Unprivileged code has no access to Component.utils and might just be able catch the exception.
try { String(window); } catch (e) { console.log("window is likely dead"); }