또한 종료 프로세스에 관찰자를 추가하고, 거기에 사이드 바를 닫습니다 수 있습니다. 나는 당신과 같은 문제를 가지고 있었고 그 경로를 끝내기도했습니다. 왜냐하면 우리는 이미 관찰자에게 다른 정리를하도록 준비시켜 놓았 기 때문입니다.
코드는 주요 오버레이의 초기화하는 동안, 다음과 같습니다 도움이
var current = this;
var quitObserver = {
QueryInterface: function(aIID) {
if (aIID.equals(Components.interfaces.nsIObserver) || aIID.equals(Components.interfaces.nsISupports)) {
return this;
}
throw Components.results.NS_NOINTERFACE;
},
observe: function(aSubject,aTopic,aData) {
var mainWindow = current._windowMediator.getMostRecentWindow("navigator:browser");
var sidebar = mainWindow.document.getElementById("sidebar");
if (sidebar.contentWindow.location.href == "chrome://daisy/content/sidebar.xul") {
mainWindow.toggleSidebar('openDaisySidebar', false);
}
}
};
setTimeout(function() {
var mainWindow = current._windowMediator.getMostRecentWindow("navigator:browser");
var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
observerService.addObserver(quitObserver,"quit-application-granted",false);
},2000);
희망을.
교활한! 이 작업을 수행하는 데 어려움을 겪었습니다 (종료시 디버깅 부족으로 인한 문제는 아니지만). 결국 응용 프로그램이 종료 할 때까지 작동하지 않는 것으로 나타났습니다. 나는 여전히 창문을 얻을 수는 있었지만, quit-application-granted가 발동 될 때까지 문서가 없다는 것을 발견했다. – Mat