Есть два возможных способа сделать это.
Обнаружение изменения местоположения
Интерфейс 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);