Добавить событие через расширение к элементу с функцией обработчика событий на исходной странице - PullRequest
0 голосов
/ 24 октября 2018

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

element.addEventListener("mouseover", pageFunction("foo", "bar"));

Я читал другие вопросы, такие как этот , который предлагает ввести код или использовать location.href="javascript:pageFunction(); void 0";, но я не понимаю, как я могу их применитьв моем случае.

1 Ответ

0 голосов
/ 24 октября 2018

Согласно справочному номеру MDN существует способ взаимодействия сценариев страниц и содержимого друг с другом .

В Firefox * объекты DOM в сценариях содержимого получают дополнительныйсвойство wrappedJSObject.Это «развернутая» версия объекта, которая включает любые изменения, внесенные в этот объект любыми скриптами страницы.

Теперь в вашем коде вы немедленно вызываете функцию, а не пропускаетеСлушатель ссылки.Чтобы решить эту проблему, вам следует заключить вызов функции в функцию стрелки, чтобы предотвратить это:

element.addEventListener("mouseover", () => window.wrappedJSObject.pageFunction("foo", "bar"), false);

* Я не смог найти никакой информации о том, следует ли использовать этот метод и в Chrome.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...