Как отредактировать свойство `window` из дополнения Firefox?

#javascript #firefox #firefox-addon

#javascript #firefox #firefox-дополнение

Вопрос:

Я хочу создать дополнение, которое изменяет одно значение в window .

Давайте возьмем, к примеру, простое окно:

 <html>
    <head>
        <title></title>
        <script>
            window.hello = 1;
        </script>
    </head>

    <body>

    </body>
</html>
  

Используя

 gBrowser.addEventListener("DOMContentLoaded",
    function (e)
    {
        e.originalTarget.defaultView.hello = 2;
    }, false);
  

не изменяет значение window.hello . Значение e.originalTarget.defaultView != window .

Как я могу получить доступ к чистому window ?

Комментарии:

1. Я думаю, e.originalTarget относится к документу этой страницы. попробуйте e.target.defaultView.wrappedJSObject.hello = 2 . У меня есть похожий код, и это работает для меня.

2. @skabbes спасибо, это работает! Отправьте в качестве ответа, и я приму.

Ответ №1:

e.originalTarget относится к элементу document этой страницы. Чтобы получить доступ к элементу window страницы, вы используете e.target.defaultView . Однако, чтобы оставаться в рамках протоколов безопасности Mozilla, вы должны получить доступ к объекту window через его wrappedJSObject свойство. В целом, вы бы изменили переменную следующим образом:

 e.target.defaultView.wrappedJSObject.hello = 2