Я новичок в chrome-расширениях (и javascript, если честно) и сумел создать простой скрипт, который копирует несколько элементов DOM со страницы и запускает страницу, содержащую те элементов на странице загрузки. Все работает отлично, однако страница, на которой данные из источника данных могут быть изменены, зависит от пользовательского ввода - то есть, если они применяют какой-то фильтр.Не удается получить расширение для запуска при нажатии кнопки
Вместо того, чтобы запускать сценарий при загрузке страницы изначально, я хотел бы иметь возможность ударить значок расширения и выполнить этот запуск один раз. Таким образом, пользователь может применить свой фильтр и запустить расширение на странице и получить новую информацию в новом всплывающем окне.
в файле манифеста:
"content_scripts": [
{
"matches": ["https://www.oddsmonkey.com/*"],
"js": ["content.js"],
"all_frames": true
}
],
"background": {
"scripts": ["background.js"]
В background.js:
chrome.browserAction.onClicked.addListener(function(tab) {
alert("Hello! I am an alert box!!");
});
Очевидно, что все, что происходит при нажатии кнопки мыши на данный момент я получаю окно предупреждения.
Я много оборачивался и не могу найти способ получить страницу background.js (которую я понимаю, требуется для нажатия кнопки) для выполнения content.js. Я вижу концепцию обмена сообщениями, но мне не нужно ничего давать или получать что-либо из скрипта содержимого, я просто хочу, чтобы он запускался!
Надеюсь, это простой вопрос для кого-то ответить.
Приветствия
Чтобы получить доступ к веб-странице вам нужен [содержание сценария] (https://developer.chrome.com/extensions/content_scripts), также [Как получить доступ к веб-странице DOM, а не расширение страницы DOM?] (// stackoverflow.com/q/4532236) и, возможно, [Есть ли JavaScript-редактор jQuery для замещения DOM?] (// stackoverflow.com/a/39508954) – wOxxOm
@wOxxOm У меня есть контент скрипт (и это уже хорошо работает). Мне просто нужно, чтобы он снова запускался, когда пользователь нажимает кнопку! Обнаружение изменений DOM и использование сообщений кажутся чрезмерно сложными, поскольку я подозреваю, что это очень простая задача. – reti
Если ваше пользовательское взаимодействие * начинается * при нажатии пользователем кнопки «browserAction», тогда скрипту содержимого следует вводить ['chrome.tabs.executeScript()'] (https://developer.chrome.com/extensions/ tabs # method-executeScript) вместо записи * manifest.json * 'content_script'. Таким образом, ваш скрипт контента не обременяет браузер, вставляя его на каждую страницу, чтобы ждать, пока он будет использоваться. Используя 'chrome.tabs.executeScript()', скрипт может начать функционировать, когда ему вводят [данные, если они необходимы, которые были переданы ему) (http://stackoverflow.com/a/40815514/ 3773011). – Makyen