2010-08-12 73 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); 

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

希望這會有所幫助。

米哈爾