Прослушивание вкладок открывать / закрывать и иметь дело с существующими вкладками - PullRequest
4 голосов
/ 01 марта 2011

Я пытаюсь что-то делать каждый раз, когда открывается новая вкладка, как при запуске firefox, так и при добавлении новой вкладки после запуска firefox. Я следую примеру на:

https://developer.mozilla.org/en/Code_snippets/Tabbed_browser

Итак, у меня есть

var container = gBrowser.tabContainer;
container.addEventListener("TabOpen", tabAdded, false);
container.addEventListener("TabClose", tabClosed, false);

function tabAdded(event) {
alert("tabAdded!");
var browser = gBrowser.getBrowserForTab(event.target);
browser.pollingService = new PollingService(createGuid());
browser.pollingService.start();
}

И у меня есть аналогичная функция для закрытия. Это прекрасно работает, когда вкладки фактически открываются / закрываются, но я столкнулся с парой проблем.

Во-первых, когда Firefox открывается, у него уже есть начальная вкладка, но событие tabAdded никогда не запускается. Точно так же, когда я закрываю firefox, он никогда не запускает TabClose для этих вкладок.

Похоже, что в этом случае правильно будет просмотреть все вкладки в gBrowser.tabContainer и добавить к ним мой сервис, а также сделать нечто подобное для закрытия Firefox. К сожалению, я не совсем уверен, как подключиться, чтобы знать, когда Firefox закрывается (возможно, есть гораздо лучший способ справиться с этим, но я не могу придумать один).

Во-вторых, gBrowser.tabContainer иногда может быть неинициализирован при запуске моего скрипта инициализации; Есть ли какое-то конкретное событие, которое я должен слушать, чтобы знать, когда я могу безопасно добавить слушателей в tabContainer?

1 Ответ

4 голосов
/ 02 марта 2011

Используйте обработчик событий загрузки, чтобы дать окну время для готовности добавить прослушиватели событий Tab и создать службу опроса для существующей вкладки.Затем используйте обработчик событий unload, чтобы выполнить очистку.

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