2010-07-28 9 views
2

나는 내 파이어 폭스 애드온 안에 사이드 바를 가지고있다. 이 사이드 바에 대해 다음과 같은 동작을 원합니다. 브라우저를 닫을 때 열려 있으면 사이드 바를 닫아야합니다 (다음 번에 브라우저를 열 때 사이드 바가 열린 상태가 아니어야합니다). 내가 이렇게 노력하고 있어요 :파이어 폭스에서 사이드 바를 닫는 법

uninit: function() { 
    var sidebarWindow = document.getElementById("sidebar").contentWindow; 
    if (sidebarWindow.location.href == "chrome://myaddon/content/mysidebar.xul") { 
     // Act on the sidebar content 
     toggleSidebar('mySampleSidebar'); 
    } 
} 

나는 window.unload 이벤트에 대해이 UNINIT 전화 :

window.addEventListener ("언로드"기능을() {myobj.uninit()}, false)를 ;

누군가가이 작업을 수행하는 방법을 말해 줄 수 있습니까? 내가하려는 것은 작동하지 않기 때문입니다. "load" 이벤트 리스너 함수에

toggleSidebar(); 

를 추가 자바 스크립트 귀하의 파이어 폭스 사이드 바 오버레이에서

감사 카필

답변

1

합니다.

sidebar.onFirefoxLoad = function(event) { 
    document.getElementById("contentAreaContextMenu") 
      .addEventListener("popupshowing", function (e) 
      { sidebar.showFirefoxContextMenu(e); }, false); 

      toggleSidebar(); 
}; 

window.addEventListener("load", sidebar.onFirefoxLoad, false); 
+0

왜로드에 추가 하시겠습니까? 당신이하고있는 일은 브라우저가 닫힐 때가 아니라 브라우저가 열릴 때 닫는 것일뿐입니다. 사이드 바를 확인하지 않으므로 다른 사람의 사이드 바가 될 수 있습니다. – studgeek

+0

이것에 대해 조금 생각한 후,로드 할 생각은 좋은 추가와 좋은 개념이라고 생각합니다. 그래서 나는 이것을 반대합니다. 그러나, 언로드시 잡는 것이 더 나은 기본 케이스라고 생각하며, @ 카필 (Kapil)과 같은 사이드 바가 있는지 확인해야한다고 생각합니다. – studgeek

0

귀하의 코드가 사이드 바 닫는 정확하지만 나는 언로드이 때문에, 브라우저 창 (browser.xul)의 시작 상태를 변경할 너무 늦게 생각 :

예를 들어 여기를 참조하십시오 browser.xul은 이미 언로드되었습니다 (그리고 사이드 바 상태를 포함한 상태가 이미 저장되었습니다).

대신 beforeunload를 사용하십시오. 드문 경우 브라우저 프로세스가 너무 언로드가 (사용자가 사망하거나 충돌)가 호출되지 않을 것이다 죽을 수에
window.addEventListener("unload", myobj.uninit, false)

: 나는 다음 그것을 잘 작동하는 것 같다 테스트. 사이드 바의 상태를 가끔 탭에 저장하는 것처럼 자주 저장할지 모르겠다.하지만 그렇다면 드문 경우에는 사이드 바를 열어 볼 수있다. 이 경우를 처리하기 위해 @Vinothkumar가 제안한 것을 추가 할 수 있습니다.

window.addEventListener("load", myobj.uninit, false)

관련 문제