我的firefox插件里面有一个侧边栏。我希望这个侧边栏有以下行为 - 如果在浏览器关闭时它打开,我应该强制关闭侧边栏(这样下次打开浏览器时侧边栏不处于打开状态)。我想这样做:
uninit: function() {
var sidebarWindow = document.getElementById("sidebar").contentWindow;
if (sidebarWindow.location.href == "chrome://myaddon/content/mysidebar.xul") {
// Act on the sidebar content
toggleSidebar('mySampleSidebar');
}
}
我将这个uninit称为window.unload事件:
window.addEventListener(“unload”,function(){myobj.uninit()},false);
有人可以告诉我如何实现这一目标,因为我想做的事情不起作用。
由于 卡皮尔
答案 0 :(得分:1)
在你的Firefox侧边栏覆盖javascript添加
toggleSidebar();
在"load"
事件监听器函数中。
见这里例如:
sidebar.onFirefoxLoad = function(event) {
document.getElementById("contentAreaContextMenu")
.addEventListener("popupshowing", function (e)
{ sidebar.showFirefoxContextMenu(e); }, false);
toggleSidebar();
};
window.addEventListener("load", sidebar.onFirefoxLoad, false);
答案 1 :(得分:0)
您的代码对于关闭侧边栏是正确的,但我认为卸载为时已晚,无法更改浏览器窗口的启动状态(browser.xul),因为browser.xul已被卸载(它的状态,包括侧边栏状态,已经存放了。)
而是使用beforeunload。我测试了以下内容,似乎工作正常:
window.addEventListener("unload", myobj.uninit, false)
在极少数情况下,浏览器进程可能会被杀死,因此不会调用卸载(用户杀死它或崩溃)。我不确定是否偶尔会存储侧边栏的状态,就像它有标签一样,但是如果它确实可以打开并且在那种罕见的情况下可以看到侧边栏。要处理这种情况,您可以添加@Vinothkumar建议的内容。
window.addEventListener("load", myobj.uninit, false)