Я сейчас пишу WebExtension под Firefox, и я застрял на взаимодействии со страницей. У меня есть сценарий содержимого, которому нужен доступ к переменным страницы, например, экземпляр jQuery.jQuery не будет добавлять прослушиватели событий в Firefox WebExtensions
Я доступ к JQuery с
var $ = window.wrappedJSObject.$;
И это работает довольно хорошо, я могу добавить DOM элементов страницы и т.д., но есть проблема с обработкой событий. Например, этот код работает отлично:
$('#nav-bar').append('<img src="..."/>'); // Works great
Но когда я пытаюсь добавить обработчик событий, он не
$('#button').click(function() {}); // Fails
Сообщение об ошибке говорит, что
Доступ запрещен доступ к собственности «обработчик "
Мое предположение: Firefox WebExtensions имеет некоторые меры безопасности которые не позволяют легко добавлять обработчики событий, но мне не повезло в том, что является причиной. Как я могу заставить его работать?
Пожалуйста, отредактируйте вопрос по теме: включите ** полный ** [mcve], который * дублирует проблему *. Включая * manifest.json *, некоторые из сценариев background/content/popup/HTML. Вопросы, требующие помощи по отладке («** почему этот код не работает? **)) должны включать: ► желаемое поведение, ► конкретную проблему или ошибку * и * самый короткий код, необходимый для его воспроизведения ** в вопросе сам**. Вопросы без четкого описания проблемы не полезны другим читателям. Смотрите: «** Как создать [mcve] **», [о каких темах я могу спросить здесь?] (Http://stackoverflow.com/help/on-topic) и [ask]. – Makyen
Если вы используете * любую * библиотеку, включая jQuery, вы должны загрузить эту библиотеку, включить ее с надстройкой и ввести ее в контекст сценария содержимого. Вы должны ** не делать то, что вы делаете, что выполняет функции, которые находятся в контексте страницы в контексте контекста содержимого. Это нарушает разделение безопасности, которое существует между контекстом страницы и контекстом сценария содержимого. Если вы это сделаете, почти наверняка будет отклонено ваше дополнение в обзоре AMO из-за намеренного открытия этого отверстия безопасности. Альтернативой является загрузка и запуск сценариев в контексте страницы. – Makyen
Спасибо за ваш вклад, но мое дополнение зависит от сайта и никогда не будет опубликовано в AMO. Я знаю о последствиях для безопасности, но это дополнение будет для моего личного использования. Моему дополнению нужен точный экземпляр jQuery, который используется для работы страницы. В начале у меня был запуск UserScript, но я решил, что у WebExtension есть некоторые дополнительные функции, которые я отсутствовал. – stil