Firefox 3 Extension Javascript Дублированный прослушиватель событий при загрузке
Я исправлял расширение, которое было написано для Firefox 2 для работы с Firefox 3. Одним из изменений было использование:
window.getBrowser(). addEventListener ( "load", checkURL, true);
а не просто через окно.
Единственная проблема заключается в том, что событие "load", по-видимому, происходит более одного раза на загрузку страницы. Я также пробовал прослушивать "DOMContentLoaded", но с аналогичными результатами.
Есть ли способ выполнить загрузку script только один раз на страницу? Если это имеет значение, страницы, которые я загружаю, являются страницами форума с сайта forums.somethingawful.com.
Ну, оказывается, что для одного события загрузки могут запускаться при загрузке изображений, таких как значок. Поэтому нужно убедиться, что цель действительно является документом:
aEvent.originalTarget.nodeName == "#document"
Дополнительную информацию можно получить на странице фрагментов:
https://developer.mozilla.org/En/Code_snippets/On_page_load
Try:
window.getBrowser().addProgressListener(
checkURL,
Components.interfaces.nsIWebProgress.NOTIFY_STATE_DOCUMENT
);
и checkLink должен быть объектом с функцией onStateChange с этой сигнатурой:
onStateChange: function(aProgress, request, stateFlags, status);
Посмотрите документы на nsiWebProgress.
Еще в рубрике
- Вопросы
- Javascript
- Firefox 3 Extension Javascript Дублированный прослушиватель событий при загрузке