Mozilla扩展 - 每个打开的选项卡跟踪数据

时间:2010-09-21 18:49:03

标签: firefox firefox-addon

在firefox扩展程序中,我暂时将数据保存在javascript中以显示在侧边栏中。选择选项卡后,我想将侧栏中的文本更改为正确的数据。每个选项卡的“标识符”最佳对象是什么?我正在尝试使用tab对象。但是,我不知道如何将数据关联到选项卡。目前,我在选项卡中获取文档上的加载事件。然后我处理文档中的数据。在选项卡中显示新数据后,我想将其保存到地图中,并将选项卡作为键,以便我可以在SelectTab事件中检索它。但是,我不确定如何在加载事件中找到文档中的选项卡。

所以请告诉我如何从文档对象中获取制表符对象,或者更好的方法来用作键。

以下是我找到的一种方式,但我确信有更优雅的东西。

getTabForDocument : function (document) {
  var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
                     .getService(Components.interfaces.nsIWindowMediator);
  for (var found = false, index = 0, tabbrowser = wm.getEnumerator('navigator:browser').getNext().gBrowser;
       index < tabbrowser.tabContainer.childNodes.length && !found;
       index++) {

    // Get the next tab
    var currentTab = tabbrowser.tabContainer.childNodes[index];

        if (currentTab.linkedBrowser.contentWindow.document == document)
    {
        return currentTab;
    }
  }
  return null;
},

...谢谢

1 个答案:

答案 0 :(得分:2)

请看一下:https://developer.mozilla.org/en/Code_snippets/Tabbed_browser,尤其是 gBrowser.selectedBrowser 部分和https://developer.mozilla.org/En/Listening_to_events_on_all_tabs

要将数据与标签相关联,您可以使用浏览器上的setUserData方法。

要获取文档的浏览器,请使用 gBrowser 全局对象上的getBrowserForDocument方法。