2010-09-21 3 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 на браузер.

Чтобы получить в браузере документ, используйте метод getBrowserForDocument на глобальном объекте gBrowser.

+0

Это помогает в вопросе хранения. У вас также есть способ легко получить браузер из документа? – Andrew

+0

Я отредактировал свой ответ с информацией о том, как это сделать. –

Смежные вопросы