如何关闭Firefox中的侧边栏

时间:2010-07-28 19:07:59

标签: firefox-addon sidebar

我的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);

有人可以告诉我如何实现这一目标,因为我想做的事情不起作用。

由于 卡皮尔

2 个答案:

答案 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)