2

我的 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("卸载", function() { myobj.uninit()}, false);

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

谢谢卡皮尔

4

2 回答 2

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);
于 2010-08-12T12:35:14.913 回答
0

您的代码对于关闭侧边栏是正确的,但我认为卸载更改浏览器窗口(browser.xul)的启动状态为时已晚,因为 browser.xul 已经被卸载(并且它的状态,包括侧边栏状态,已经被存放了)。

而是使用 beforeunload。我测试了以下,它似乎工作正常:
window.addEventListener("unload", myobj.uninit, false)

在极少数情况下,浏览器进程可能会被终止,因此不会调用 unload(用户终止它或它崩溃)。我不确定是否偶尔会像保存选项卡一样存储侧边栏的状态,但如果确实如此,它可以打开并在极少数情况下使侧边栏可见。要处理这种情况,您可以添加@Vinothkumar 建议的内容。

window.addEventListener("load", myobj.uninit, false)

于 2011-08-26T00:20:06.590 回答