на вкладке переключения событий - PullRequest
4 голосов
/ 15 мая 2011

Я искал событие , которое могло бы запустить некоторый код после нажатия (изменения) на вкладку в браузере, но я не нашел его.

Можно ли как-нибудь добиться этого события?

Я уже слушаю событие DOMContentLoaded, я отображаю некоторую информацию о текущей странице в строке состояния. Когда я изменил вкладку, информация в строке состояния неверна (мне нужно перезагрузить страницу).

спасибо

1 Ответ

5 голосов
/ 16 мая 2011

Есть два возможных способа сделать это.

Обнаружение изменения местоположения

Интерфейс nsIWebProgressListener используется для определения, когда местоположение окна изменилось.Поместите что-то вроде этого в обработчик onLoad вашего окна:

// implements nsIWebProgressListener
var listener = {
    onLocationChange: function(aProgress, aRequest, aURI) {
        // fires on tab change; update status here;
        // get the currently selected tab
        var currDoc = gBrowser.contentDocument; 
    },
    onStateChange: function(a, b, c, d) {},
    onProgressChange: function(a, b, c, d, e, f) {},
    onStatusChange: function(a, b, c, d) {},
    onSecurityChange: function(a, b, c) {}
}

gBrowser.addProgressListener(
    listener, 
    Components.interfaces.nsIWebProgress.NOTIFY_LOCATION);

Обратите внимание, что onLocationChange срабатывает каждый раз, когда изменяется расположение окна.Это означает, что он запускается при запуске браузера, при загрузке нового URL-адреса в текущей вкладке, при изменении вкладки и т. Д. Это, вероятно, то, что вам нужно, если ваша цель - обновить строку состояния на основе загруженной в данный моментURL.

Обнаружение изменения вкладки

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

function exampleTabSelected(event) {
  var browser = gBrowser.selectedBrowser;
  // browser is the XUL element of the browser that's just been selected
}

// During initialisation
var container = gBrowser.tabContainer;
container.addEventListener("TabSelect", exampleTabSelected, false);

// When no longer needed
container.removeEventListener("TabSelect", exampleTabSelected, false);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...