Я пытаюсь что-то делать каждый раз, когда открывается новая вкладка, как при запуске 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?