每当一个新标签页打开时,我都想做一些事情,无论是通过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添加侦听器?