2010-08-12 42 views
2

这里描述我已经安装了“Hello World”的开发例如用于Firefox的扩展: http://blog.mozilla.com/addons/2009/01/28/how-to-develop-a-firefox-extension/gBrowser.addEventListener:“load”事件发射三次

我修改了被传递到gBrowser.addEventListener匿名函数:

gBrowser.addEventListener("load", function (event) { 

    var t = event.target; 
    alert("Content title: " + t.contentTitle);   

}, false); 

此功能在每次页面加载时都会被调用三次。当我点击一个链接时,它会为当前(已经加载的页面)启动两次,并在新页面启动一次。

我已经卸载了所有其他插件(包括Firebug)并且仍然会触发3次。有谁知道这可能是为什么?

感谢理查德

+0

我觉得这是一个重复:http://stackoverflow.com/questions/3470961/onload-called-multiple-times-from-firefox-extension/ – MatrixFrog 2010-08-13 05:26:57

+0

是这个原因。你的回答是正确的。 – 2010-08-13 10:14:10

回答

1

我会建议你做这样的事情:

window.addEventListener("load", function load() { 
        window.removeEventListener("load",load,false); //no longer needed 
        window.gBrowser.addEventListener('DOMContentLoaded', function load(event) { 
        your_addon.init_function(event); 
        }, false); 

在我的插件它的工作原理。 :-)

希望这会有所帮助。

米哈尔