如果我的自己的侧边栏在Firefox关闭时保持打开状态,则会在启动时再次显示。我发现这是不受欢迎的,宁愿它一直隐藏,直到手动打开。是否有可能阻止这种情况发生?
我尝试将这段代码添加到我的扩展程序的初始化函数中,以便在出现边栏时关闭边栏:
toggleSidebar("mySidebar", false);
这看起来似乎不太一致 - 它似乎忽略了错误的参数,只是切换侧边栏!如果它确实正常工作它会产生不必要的副作用 - 我需要在显示任何内容之前打开和关闭侧边栏一次。很奇怪,但我认为Firefox对侧边栏可见性的看法已经不同步了。
似乎其他人在MozillaZine forums上遇到同样的问题。
答案 0 :(得分:2)
您还可以向关机进程添加观察者,并关闭侧边栏。我遇到了和你一样的问题,最后走了那条路,因为我们已经设置了一个观察员进行其他清理。
在主叠加层初始化期间,代码如下所示:
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);
希望有所帮助。
答案 1 :(得分:0)
toggleSidebar("mySidebar", false);
不起作用,因为第二个参数意味着“forceOpen”不是打开/关闭标志。
正如有人在Mozillazine上回答的那样,这是因为Firefox只会在会话中保留侧边栏状态。你确定你需要在这里有所不同吗?
这是Firefox中用于在启动时打开侧边栏的代码:
http://mxr.mozilla.org/mozilla-central/source/browser/base/content/browser.js#999 (以后访问时可能会关闭这些行 - 它是指向源的最新版本的链接)
1000 let box = document.getElementById("sidebar-box");
1001 if (box.hasAttribute("sidebarcommand")) {
这里是sidebarcommand
属性被保留的地方:
http://mxr.mozilla.org/mozilla-central/source/browser/base/content/browser.js#1422
1373 function BrowserShutdown()
...
1426 if (!enumerator.hasMoreElements()) {
1427 document.persist("sidebar-box", "sidebarcommand");
我建议试试这个:
如果当前窗口是最后一个窗口并且侧边栏已打开,
BrowserShutdown
之前关闭侧边栏(它是registered as an unload handler for the window)如果您想出工作解决方案,请与其他人分享,最好是在MDC上:https://developer.mozilla.org/En/Code_snippets/Sidebar
答案 2 :(得分:0)
请参阅How to close a sidebar in firefox上的答案,了解如何在关机时关闭它,以防万一,在关机时。