Отсутствие свойств в окне при использовании скрипта содержимого - PullRequest
1 голос
/ 09 февраля 2012

Мой аддон внедряет некоторые скрипты контента в различные веб-сайты. После попытки связать onbeforeunload или вызова window.location.reload я понял, что объект окна пропускает некоторые свойства.

Есть ли способ привязки определенных событий (onbeforeunload, onunload и т. Д.) При вводе кода через модуль page-mod?

Я создал тестовое дополнение, показывающее, что эти свойства отсутствуют: https://builder.addons.mozilla.org/addon/1037497/latest/

Решения о том, как их использовать в любом случае?

1 Ответ

2 голосов
/ 09 февраля 2012

Краткий ответ: вы добавляете прослушиватель событий, используя метод addEventListener(), например:

window.addEventListener("beforeunload", function(event)
{
  ...
}, false);

Длинный ответ: по соображениям безопасности ваш контент-скрипт не связывается напрямую с объектами DOM, напримерне может видеть никаких добавленных скриптом свойств.В технических подробностях также перечислены некоторые ограничения:

Назначение или чтение свойства on* для XPCNativeWrapper узла DOM или объекта Window вызовет исключение.(Вместо этого используйте addEventListener и используйте event.preventDefault(); в своем обработчике, если вы использовали return false; ранее.)

В скрипте содержимого вы, вероятно, не хотите заменять обработчики событий веб-страницыв любом случае, добавьте свой собственный - это то, что делает addEventListener().

Дополнительное чтение

...