Errors: Dead object
Errors: Dead object
信息
TypeError: can't access dead object
错误类型
TypeError
什么地方出了错?
为了提高内存使用率并防止内存泄漏,Firefox不允许附加组件在其父文档被销毁后保留对DOM对象的强引用。一个死对象,持有一个强壮的(保持活着)的DOM元素的引用,即使它在DOM中被销毁之后仍然存在。为了避免这些问题,引用外部文档中的DOM节点应该存储在特定于该文档的对象中,并在文档被卸载时被清除,或者被存储为弱引用。
检查一个对象是否死亡
Components.utils提供了一个isDeadWrapper()
特权代码可能使用的方法。
if (Components.utils.isDeadWrapper(window)) {
// dead
}
无特权的代码无法访问Component.utils,可能只是能够捕获异常。
try {
String(window
}
catch (e) {
console.log("window is likely dead"
}