我正在修复为Firefox 2编写的扩展程序,以便与Firefox 3一起使用。其中一项更改是使用:
window.getBrowser()。addEventListener(“load”,checkURL,true);
而不是通过窗口。
唯一的问题是“load”事件似乎每页加载多次发生。我也试过听“DOMContentLoaded”,但结果相似。
有没有办法确保每页加载只执行一次脚本?如果重要,我加载的页面是来自forums.somethingawful.com的论坛页面。
答案 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上的文档。