如果我自己的边栏在 Firefox 关闭时保持打开状态,它会在启动时再次显示。我发现这是不可取的,宁愿它在手动打开之前保持隐藏状态。有可能阻止这种情况发生吗?
我尝试将这段代码添加到我的扩展程序的初始化函数中,以便在侧边栏出现时将其关闭:
toggleSidebar("mySidebar", false);
这似乎不太一致 - 它似乎忽略了 false 参数并且只是切换了侧边栏!当它正常工作时,它会产生不需要的副作用——我需要打开和关闭侧边栏一次,然后它才会显示任何内容。很奇怪,但我认为 Firefox 的部分 View 关于边栏的可见性已经不同步了。
似乎其他人在 MozillaZine forums 上也遇到了同样的麻烦.
最佳答案
您还可以在关闭过程中添加一个观察者,并在那里关闭侧边栏。我遇到了与您相同的问题,并最终选择了这条路线,因为我们已经设置了一个观察器来进行其他一些清理工作。
代码如下所示,在主覆盖层的初始化期间:
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);
希望对您有所帮助。
关于javascript - 如何防止 Firefox 在启动时显示我的扩展的侧边栏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1690002/