javascript - 从 Firefox 扩展检测选项卡关闭(关闭后)

标签 javascript firefox-addon dom-events

我正在尝试让我的 Firefox 扩展从浏览器中的所有选项卡创建一个 URL 列表。为了保持列表更新,我需要知道选项卡何时关闭。

我尝试过使用:

window.addEventListener("TabClose", tabRemoved, false);

但是,这会在选项卡实际关闭之前被调用,这会导致我更新的选项卡列表仍然包含关闭的选项卡 url。

我通过迭代所有浏览器来更新选项卡列表,如下所示:

function ()
{
    gBrowser = window.getBrowser();
    tabs = gBrowser.browsers;
    urls = [];

    for (var i = 0; i < tabs.length; i++)
    {
        if (typeof(tabs[i]) != "undefined") {
            urls.push(tabs[i].webNavigation.currentURI.spec);
        }
    }

    return urls;
}

所以我正在寻找的是一个在选项卡关闭后被调用的事件,或者一种获取已关闭选项卡索引的方法,以便我可以在迭代浏览器时跳过它。

有人知道任何此类事件或我的问题的其他解决方案吗?

最佳答案

没有特殊的事件 - 您只需捕获常规事件并延迟更新选项卡列表即可。大致如下:

var tabRemoveTimeout = null;
window.addEventListener("TabClose", tabRemoved, false);

function tabRemoved(event)
{
  // If we already scheduled an async action - cancel it
  if (tabRemoveTimeout)
    window.clearTimeout(tabRemoveTimeout);

  tabRemoveTimeout = window.setTimeout(function()
  {
    tabRemoveTimeout = null;
    updateTabList();
  }, 0);
}

一种不太通用的方法是立即更新列表,但排除正在关闭的选项卡。

关于javascript - 从 Firefox 扩展检测选项卡关闭(关闭后),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9572466/

相关文章:

javascript - 是否有可以通过帐号确定运输公司的正则表达式模式?

firefox-addon - 如何使用 OS.File 下载图像到桌面

javascript - Angular 2 : RadioButton change event is not binding

使用自定义附加数据创建 JavaScript 事件

javascript - 在 Angular 中使 Promise 依赖于另一个 Promise

javascript - 将 MongoDB ObjectId 与 lodash 结合使用

javascript - 使用最后一个文本框值填充新添加的文本框

javascript - 类型错误 : [API] is undefined in content script or Why can't I do this in a content script?

javascript - 将使用sdk/context-menu API创建的菜单项添加到上下文菜单的顶部

javascript - 将点击监听器添加到 JavaScript 选项卡栏的最佳方法是什么?