我有兴趣在Firefox窗口的右侧打开一个webPanel。根据{{3}},我确定可以通过设置浏览器元素的direction
样式来完成。但是,我希望在webPanel关闭后清除此设置。有没有办法可以发现这个?到目前为止,我能想到的唯一方法是轮询sidebarWindow.location.href
(以检测侧边栏是否已更改)和sidebarHidden
(以检测侧边栏是否已关闭)。
var browser = document.getElementById('browser');
browser.style.direction = "rtl";
var sidebarWindow = document.getElementById("sidebar").contentWindow;
var sidebarBox = document.getElementById('sidebar-box');
var sidebarHidden = sidebarBox.collapsed || sidebarBox.hidden;
sidebarWindow.addEventListener("unload", function (event) {
alert("1"); //This code fires when the web panel is opened
//but not when it is closed.
});
sidebarBox.addEventListener("unload", function (event) {
alert("2"); //This code does not fire.
});
sidebarWindow.addEventListener("close", function (event) {
alert("3"); //This code does not fire.
});
sidebarBox.addEventListener("close", function (event) {
alert("4"); //This code does not fire.
});
openWebPanel('Test', 'http://www.google.com');
答案 0 :(得分:1)
unload
事件。unload
。unload
。如果你继续执行你的实现,你需要确保你的代码正确处理所有这三个。
和3.应该通过<broadcaster id="viewWebPanelsSidebar">
更改checked
属性(请参阅toggleSidebar()
的实现)来观察,因此您可以让另一个元素观察并作用于{ {3}}
应该听取unload
并采取相应行动。
为了获得正确的unload
事件,我认为以下应该可以解决这个问题:
sidebar.contentDocument.getElementById("web-panels-browser")).
addEventListener("unload", ...);
但是我的记忆有点不稳定,所以你可能需要摆弄一下。 (sizebar有<xul:browser id="web-panels-browser">
,显示实际内容......)
在说完所有这些之后:我认为像这样混淆边栏是个坏主意。 在这种情况下,MDN wiki(!)有不好的建议。
您可能最好使用其他方式来显示信息 - 例如一个新的标签,一个面板,一个像社交边栏一样的新侧边栏...例如,社交侧边栏不仅在右侧,它实际上是一个独立的侧边栏,不是“主要”侧边栏的一部分。