Firefox 3扩展Javascript重复事件监听器加载

时间:2009-05-16 19:04:51

标签: javascript firefox

我正在修复为Firefox 2编写的扩展程序,以便与Firefox 3一起使用。其中一项更改是使用:

window.getBrowser()。addEventListener(“load”,checkURL,true);

而不是通过窗口。

唯一的问题是“load”事件似乎每页加载多次发生。我也试过听“DOMContentLoaded”,但结果相似。

有没有办法确保每页加载只执行一次脚本?如果重要,我加载的页面是来自forums.somethingawful.com的论坛页面。

2 个答案:

答案 0 :(得分:1)

嗯,事实证明,对于一个,可以通过加载像favicon这样的图像来触发加载事件。因此,必须确保目标确实是文档:

aEvent.originalTarget.nodeName == "#document"

可以在代码段页面上获取更多信息: https://developer.mozilla.org/En/Code_snippets/On_page_load

答案 1 :(得分:0)

尝试:

window.getBrowser().addProgressListener(
  checkURL,
  Components.interfaces.nsIWebProgress.NOTIFY_STATE_DOCUMENT
);

和checkLink需要是带有此签名的onStateChange函数的对象:

onStateChange: function(aProgress, request, stateFlags, status);

查看nsiWebProgress上的文档。