2010-09-21 46 views
1

在Firefox扩展中,我暂时将数据保存在JavaScript中以显示在侧边栏中。当选中标签时,我想将侧边栏中的文本更改为正确的数据。什么是最好的对象用作每个标签的“标识符”?我试图使用标签对象。但是,我坚持如何将数据关联到选项卡。目前,我在一个选项卡中的文档上得到一个加载事件。然后我处理文档中的数据。在显示标签中的新数据之后,我想将其保存到地图中,并将选项卡作为关键字,以便我可以在SelectTab事件中检索它。但是,我不确定如何在加载事件中查找文档中的选项卡。Mozilla扩展 - 每个打开的标签跟踪数据

所以,请告诉我如何从文档对象中获取标签对象,或者使用更好的东西作为关键。

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

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; 
}, 

谢谢...

回答

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 global对象上使用getBrowserForDocument方法。

+0

这有助于解决存储问题。您是否也有办法轻松从文档中获取浏览器? – Andrew 2010-09-23 12:54:25

+0

我编辑了我的答案,并提供了如何做到这一点的信息。 – 2010-09-23 14:29:03