javascript - 监听选项卡打开/关闭并处理现有选项卡

标签 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?

最佳答案

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

关于javascript - 监听选项卡打开/关闭并处理现有选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5159856/

相关文章:

javascript - 在 svg 中集中根节点

javascript - 可以从内存中创建一个 AudioBuffer,即一个 Int8Array

javascript - 任何 Firefox/Webkit 的 contenteditable 帮助插件?

javascript - 在 Firefox 扩展页面内提交表单

javascript - Firefox 源代码中定义或创建的 "window"对象在哪里

javascript - Dotenv 配置不适用于 React.js 应用程序

javascript - 为什么弹出警报会影响 "designMode"?

css - firefox/ie/chrome/Safari 之间的.css 问题

javascript - 在 Firefox Add-on SDK 中监听固定/取消固定选项卡事件

javascript - 如何提前中断 reduce() 方法?