每次打开一个新选项卡时都会尝试执行某些操作,无论是通过firefox启动还是在firefox启动后添加新选项卡。我一直在关注这个例子:
https://developer.mozilla.org/en/Code_snippets/Tabbed_browser
所以我有
var container = gBrowser.tabContainer;
container.addEventListener("TabOpen", tabAdded, false);
container.addEventListener("TabClose", tabClosed, false);
function tabAdded(event) {
alert("tabAdded!");
var browser = gBrowser.getBrowserForTab(event.target);
browser.pollingService = new PollingService(createGuid());
browser.pollingService.start();
}
我也有类似的功能。这适用于实际打开/关闭标签的情况,但我遇到了一些问题。
首先,当Firefox打开时,它已经打开了初始选项卡,但tabAdded事件永远不会触发它。类似地,当我关闭firefox时,它永远不会为这些选项卡触发TabClose。
在这种情况下,似乎正确的做法是遍历gBrowser.tabContainer中的所有选项卡并将其添加到它们中,并在Firefox关闭时执行类似的操作。不幸的是,我不太确定如何知道Firefox什么时候关闭(也有可能有更好的方法来解决这个问题,但我想不到一个)。
其次,当我的初始化脚本运行时,gBrowser.tabContainer有时可能未初始化;当我可以安全地将监听器添加到tabContainer时,我应该听一个特定的事件吗?
答案 0 :(得分:4)
使用加载事件侦听器为窗口准备时间,以便您添加Tab事件侦听器并为现有选项卡创建轮询服务。然后使用卸载事件监听器进行清理。