Плагины, как из content_scripts и action JS общаться между собой?
Добрый день, начал изучать плагины. Manfisest v3:
{
"manifest_version": 3,
"name": "CRM",
"description": "Отправить на example.com данные",
"version": "1.0.0",
"icons": {"128": "icon_128.png"},
"content_scripts":[
{
"matches":["https://habr.com/ru/*"],
"css":["style.css"],
"js":["script.js"]
}
],
"action": {
"default_popup": "popup.html"
},
"permissions": ["activeTab"]
}
При открытии habr загружается script.js, парсит html и получаю данные. Также есть action popup.html в котором есть его popup.js. Хотелось бы script.js и popup.js связать, от script.js хочу получать данные на popup.js.
Подскажите в какую сторону копать, ссылки. Просто навыков моего гугления не хватает, не понимаю что гуглить. (localStorage не подходит, у странички плагина и вкладки разные)
Дополнительно:
Общение обычно происходит через сервис воркер расширения. Из попап шлете сообщение в воркер, а дальше он пересылает в нужную вкладку. Хотя можно сообщение сразу с попапа в нужную вкладку запульнуть, в попап метод tabs доступен.
https://chrome-ext.blogspot.com/2014/02/blog-post_...
- Большое спасибо!
Для решения данной проблемы вы можете воспользоваться услугами фрилансеров. Мы выполним необходимую работу быстро и качественно.
Оставить комментарий Отменить
Ответы
- Есть ответ! к записи Как уменьшить масштаб меньше 100% в Windows 10 (22H2)
- Есть ответ! к записи Аналоги CloudFlare в России?
- Есть ответ! к записи Аналоги CloudFlare в России?
- Есть ответ! к записи Как называется человек, который дизайн придумает для сайта и сверстает его?
- Есть ответ! к записи Можно ли установить Яндекс.Диск на АльтЛинукс?
- Есть ответ! к записи Картинки мутные только на сафари, есть выход?
- Есть ответ! к записи Keenetic. Как настроить SSTP клиент с сертификатом?
- Есть ответ! к записи Чем заменить executor в aiogram 3?
Для того чтобы плагины (extensions) могли общаться между собой в браузере, например, между content_scripts и action JS, можно использовать следующие методы:
1. Использование сообщений (Messages): Вы можете использовать API браузера, такой как chrome.runtime.sendMessage(), чтобы отправлять сообщения между различными частями вашего плагина. Например, вы можете отправить сообщение из content_scripts к action JS и наоборот.
php2. Использование событий (Events): Вы также можете использовать события для обмена информацией между различными частями вашего плагина. Например, вы можете создать событие в content_scripts и прослушивать его в action JS.
php3. Использование хранилища (Storage): Вы можете использовать хранилище браузера, такое как chrome.storage, чтобы сохранить данные из одной части плагина и получить их в другой части.
phpЭто некоторые из способов, которые можно использовать для общения между различными частями плагина в браузере. Выбор метода зависит от конкретных требований вашего плагина и удобства его реализации.
Для общения между content_scripts и action JS в расширениях для браузеров (например, в Chrome или Firefox) можно использовать различные способы. Content_scripts - это скрипты, которые выполняются на странице, к которой применено расширение, а action JS - это скрипты, которые выполняются в background-процессе расширения.
Один из способов общения между ними - использование сообщений. Например, content_script может отправлять сообщения через chrome.runtime.sendMessage(), а action JS может слушать эти сообщения через chrome.runtime.onMessage.addListener(). Таким образом, вы можете передавать данные и команды между content_scripts и action JS.
Пример использования сообщений для общения между content_scripts и action JS:
content_script.js:
javascript
chrome.runtime.sendMessage({message: "Hello from content script"}, function(response) {
console.log("Response from action JS: " + response.message);
});
action.js:
javascriptchrome.runtime.onMessage.addListener(function(message, sender, sendResponse) {
console.log("Message from content script: " + message.message);
sendResponse({message: "Hello from action JS"});
});
Еще один способ общения - использование хранилища расширения (chrome.storage). Content_scripts могут записывать данные в хранилище, а action JS может считывать их. Это удобно для передачи больших объемов данных или для хранения состояния между различными частями расширения.
Пример использования хранилища для общения между content_scripts и action JS:
content_script.js:
javascript
chrome.storage.local.set({key: "value"}, function() {
console.log("Data saved in storage");
});
action.js:
javascript
chrome.storage.local.get("key", function(data) {
console.log("Data from content script: " + data.key);
});
Также можно использовать события для общения между content_scripts и action JS. Content_scripts могут генерировать события с помощью document.dispatchEvent(), а action JS может слушать эти события с помощью document.addEventListener(). Этот способ подходит для передачи информации о событиях на странице.
Пример использования событий для общения между content_scripts и action JS:
content_script.js:
javascript
var event = new CustomEvent("customEvent", {detail: "Data from content script"});
document.dispatchEvent(event);
action.js:
javascript
document.addEventListener("customEvent", function(event) {
console.log("Data from content script: " + event.detail);
});
Итак, существует несколько способов общения между content_scripts и action JS в расширениях для браузеров: использование сообщений, хранилища расширения и событий. Выбор конкретного способа зависит от задачи, которую необходимо решить, и от удобства его реализации. Надеюсь, что данная информация поможет вам успешно реализовать общение между частями вашего расширения!