Firefox 3 Extension Javascript Дублированный прослушиватель событий при загрузке

61
5

Я исправлял расширение, которое было написано для Firefox 2 для работы с Firefox 3. Одним из изменений было использование:


window.getBrowser(). addEventListener ( "load", checkURL, true);


а не просто через окно.


Единственная проблема заключается в том, что событие "load", по-видимому, происходит более одного раза на загрузку страницы. Я также пробовал прослушивать "DOMContentLoaded", но с аналогичными результатами.


Есть ли способ выполнить загрузку script только один раз на страницу? Если это имеет значение, страницы, которые я загружаю, являются страницами форума с сайта forums.somethingawful.com.

спросил(а) 2021-01-19T16:04:00+03:00 2 месяца, 3 недели назад
1
Решение
62

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


aEvent.originalTarget.nodeName == "#document"

Дополнительную информацию можно получить на странице фрагментов:
https://developer.mozilla.org/En/Code_snippets/On_page_load

ответил(а) 2021-01-19T16:04:00+03:00 2 месяца, 3 недели назад
44

Try:


window.getBrowser().addProgressListener(
checkURL,
Components.interfaces.nsIWebProgress.NOTIFY_STATE_DOCUMENT
);

и checkLink должен быть объектом с функцией onStateChange с этой сигнатурой:

onStateChange: function(aProgress, request, stateFlags, status);

Посмотрите документы на nsiWebProgress.

ответил(а) 2021-01-19T16:04:00+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема