我的插件是将一些内容脚本注入各种网站。尝试绑定onbeforeunload
或调用window.location.reload
后,我意识到窗口对象遗漏了某些属性。
有没有办法在通过onbeforeunload
模块注入代码时绑定某些事件(onunload
,page-mod
等)?
我已经创建了一个测试加载项,显示缺少这些属性:https://builder.addons.mozilla.org/addon/1037497/latest/
无论如何使用它们的解决方案?
答案 0 :(得分:2)
简短回答:使用addEventListener()
方法添加事件监听器,如下所示:
window.addEventListener("beforeunload", function(event)
{
...
}, false);
答案很长:出于安全原因,您的内容脚本不直接与DOM对象通信,例如:它看不到任何脚本添加的属性。 technical details还列出了一些限制:
分配或阅读
on*
的{{1}}属性 DOM节点或Window对象将引发异常。 (使用 而是XPCNativeWrapper
,并使用addEventListener
处理程序,如果您之前使用过event.preventDefault();
。)
在内容脚本中,您可能不想替换网页的事件处理程序,而是添加自己的 - 这就是return false;
正在做的事情。