使用内容脚本时窗口中缺少属性

时间:2012-02-08 20:19:58

标签: javascript firefox firefox-addon firefox-addon-sdk

我的插件是将一些内容脚本注入各种网站。尝试绑定onbeforeunload或调用window.location.reload后,我意识到窗口对象遗漏了某些属性。

有没有办法在通过onbeforeunload模块注入代码时绑定某些事件(onunloadpage-mod等)?

我已经创建了一个测试加载项,显示缺少这些属性:https://builder.addons.mozilla.org/addon/1037497/latest/

无论如何使用它们的解决方案?

1 个答案:

答案 0 :(得分:2)

简短回答:使用addEventListener()方法添加事件监听器,如下所示:

window.addEventListener("beforeunload", function(event)
{
  ...
}, false);

答案很长:出于安全原因,您的内容脚本不直接与DOM对象通信,例如:它看不到任何脚本添加的属性。 technical details还列出了一些限制:

  

分配或阅读on*的{​​{1}}属性   DOM节点或Window对象将引发异常。 (使用   而是XPCNativeWrapper,并使用addEventListener   处理程序,如果您之前使用过event.preventDefault();。)

在内容脚本中,您可能不想替换网页的事件处理程序,而是添加自己的 - 这就是return false;正在做的事情。

Additional reading