Расширение Mozilla - данные отслеживания для каждой открытой вкладки - PullRequest
1 голос
/ 21 сентября 2010

В расширении Firefox я временно сохраняю данные в javascript для отображения на боковой панели.Когда вкладка выбрана, я хочу изменить текст на боковой панели на правильные данные.Какой объект лучше всего использовать в качестве «идентификатора» для каждой вкладки?Я пытаюсь использовать объект вкладки.Тем не менее, я застрял на том, как связать данные на вкладке.В настоящее время я получаю событие загрузки документа на вкладке.Затем я обрабатываю данные в документе.После отображения новых данных на вкладке я хочу сохранить их на карте, используя вкладку в качестве ключа, чтобы можно было извлечь их по событию 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 Ответ

2 голосов
/ 23 сентября 2010

Взгляните на: 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 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...