听标签打开/关闭并处理现有标签

时间:2011-03-01 20:20:21

标签: javascript firefox firefox-addon

每次打开一个新选项卡时都会尝试执行某些操作,无论是通过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时,它永远不会为这些选项卡触发TabClos​​e。

在这种情况下,似乎正确的做法是遍历gBrowser.tabContainer中的所有选项卡并将其添加到它们中,并在Firefox关闭时执行类似的操作。不幸的是,我不太确定如何知道Firefox什么时候关闭(也有可能有更好的方法来解决这个问题,但我想不到一个)。

其次,当我的初始化脚本运行时,gBrowser.tabContainer有时可能未初始化;当我可以安全地将监听器添加到tabContainer时,我应该听一个特定的事件吗?

1 个答案:

答案 0 :(得分:4)

使用加载事件侦听器为窗口准备时间,以便您添加Tab事件侦听器并为现有选项卡创建轮询服务。然后使用卸载事件监听器进行清理。