2011-11-28 41 views
0

有一個對話,我定義一個函數OnAccept()並調用它像這樣:ondialogaccept:ondialogaccept="OnAccept()"Firefox擴展:添加新的選項卡,但不是的addEventListener工作

OnAccept(): 
    function OnAccept() { 
     var windowManager = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(); 
     var windowManagerInterface = windowManager.QueryInterface(Components.interfaces.nsIWindowMediator); 
     var topWindow = windowManagerInterface.getMostRecentWindow("navigator:browser"); 
     if(topWindow) 
     { 
      var web = topWindow.document.getElementById("content"); 
      web.selectedTab = web.addTab("http://www.google.com"); 
      var newBrowserHandle = web.getBrowserForTab(web.selectedTab); 
      newBrowserHandle.addEventListener("load", function() { alert("111"); }, true); 
     } 
    } 

但是addEventListener不起作用。我不知道爲什麼。

回答

0

有在你的代碼中的一些問題是很可能只是壞複製粘貼&:ondialogaccept:ondialogaccept="OnAccept()"應該ondialogaccept="OnAccept()"OnAccept():應該OnAccept:(沒有括號)。

主要問題:load事件偵聽器不會從內容傳播到chrome,您需要progress listeners才能獲取該事件。您可以收聽DOMContentLoaded事件,但可以在瀏覽器元素上捕獲該事件。只有文檔內容被加載時,此事件纔會觸發,而不是圖像等 - 但也許這對您來說沒問題。

+0

感謝您的幫助。現在的問題是,如果對話框沒有關閉,加載事件偵聽器就OK,但是如果對話框關閉,我看不到警報。對話框的關閉事件是否會影響對話框的加載偵聽器新標籤。 – user1068820

相關問題