Регистрация «глобального слушателя» против слушателя событий в документе / окне верхнего уровня - PullRequest
0 голосов
/ 01 февраля 2020

Это немного странный случай, но, пожалуйста, выслушайте меня.

Я пытаюсь разработать расширение для добавления привязок клавиш для уже существующего веб-сайта. Сайт разработан на основе множества вложенных фреймов, которые загружаются и изменяются в ответ на отзывы пользователей. Мои горячие клавиши работали как пользовательский скрипт, загруженный в Tampermonkey, но когда я перенес точно такой же код в расширение Chrome, способ, которым слушатели событий верхнего уровня реагируют на события внутри iframes, совершенно другой.

In Tampermonkey, document.onkeydown запускает соответствующий обратный вызов в ответ на любое нажатие клавиши внутри любого iframe, и с помощью инструментов разработчика Chrome я могу видеть прослушиватель событий в списке «Глобальных прослушивателей» для всей вкладки.

Точно такой же код в распакованном расширении Chrome регистрирует только слушатель на объекте документа верхнего уровня, и поэтому, если фокус находится внутри iframe, обратный вызов не выполняется.

В конечном счете, Помимо расширений Tampermonkey и Chrome, существует явный способ установить глобальный прослушиватель для всех элементов, независимо от того, находятся ли они внутри iframe или нет, без рекурсивного обхода их и добавления слушателя к каждому из них. один?

Я немного новичок в Javascript и веб-разработке в целом, поэтому извиняюсь, если это тупой вопрос.

(В основном) полный код здесь: https://pastebin.com/b6qnCMdL

Заранее спасибо!

РЕДАКТИРОВАТЬ: После немного больше копания, это может быть связано с различиями в том, как Tampermonkey сопоставляет URL-адреса с тем, как Chrome расширения соответствуют URL-адресам.

1 Ответ

0 голосов
/ 01 февраля 2020

Решено. Добавление "all_frames" = true в файл манифеста. json привело к тому же поведению, которое я наблюдал от Tampermonkey.

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