您还可以在关闭过程中添加观察者,并在此处关闭侧边栏。我和你有同样的问题,最后走那条路,因为我们已经设置了一个观察者来做一些其他的清理工作。
在主叠加层的初始化期间,代码如下所示:
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);
希望有帮助。