2011-11-28 5 views
0

작동하지 않음 대화 상자가있다, 나는 함수 OnAccept()를 정의하고 다음과 같이 호출 : ondialogaccept:ondialogaccept="OnAccept()"합니다.파이어 폭스 확장 기능 : 새 탭을 추가,하지만하여 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 이벤트 리스너가 콘텐츠에서 크롬으로 전파되지 않으므로 해당 이벤트를 얻으려면 progress listeners이 필요합니다. 그러나 DOMContentLoaded 이벤트를 청취 할 수는 있지만 브라우저 요소에서 발견 될 수 있습니다. 이 이벤트는 이미지 콘텐츠가 아닌 문서 콘텐츠 만로드 될 때 실행됩니다.하지만 괜찮습니다.

+0

도움 주셔서 감사합니다. 이제 문제는 대화 상자가 닫히지 않으면로드 이벤트 수신기가 정상이지만 대화 상자가 닫히면 경고를 볼 수 없다는 것입니다. 대화 상자의 닫기 이벤트가로드 수신기의 영향을받습니다. 새 탭. – user1068820

관련 문제