Как я могу общаться между background.js и popup.js?
У меня есть расширение с фоновым скриптом:
<code>"background": { "scripts": ["scripts/background.js"] }, </code>
и скрипт контента:
<code>"content_scripts": [ { "matches": ["*://*/*"], "js": ["scripts/content_script.js"] } ], </code>
всплывающее окно(popup.html)
и всплывающий скрипт(popup.js)
. popup.js не регистрируется в манифесте и имеет дело с просмотром popup.html и прослушиванием действий пользователя, выполненных в popup.html, таких как нажатие кнопки.
Я хочу сделать расширение, что отправляет по электронной почте страницу текущей вкладки, и для этого мне нужно получить страницу DOM сcontent_script
, передать данные (DOM) вbackground script
. После этого, когда пользователь запускает событие в popup.html, popup.js перехватывает это событие, и я хочу, чтобы popup.js мог получать переданные данные (DOM) из background.js. Как я мог сделать это? Итак, мой вопрос, как я могу общаться между background.js и popup.js?
Я нашел ответ на свой вопрос:
Спасибо Элвису, думаю, я решил проблему; Мне нужно только получить DOM сайта в скрипте контента, но решение моего вопроса было следующим:
Content_script.js
<code> // SEND DOM structure to the background page chrome.extension.sendRequest({dom: "page DOM here"}); </code>
Background.html
<code><html> <head> <script> chrome.extension.onRequest.addListener(function(request, sender, sendResponse) { if(request.dom != "") var theDOM = request.dom; console.log(request.dom); // page DOM here -> works chrome.extension.sendRequest({theDOM: theDOM}); // theDOM : "page DOM here" }); </script> </head> <body> </body> </html> </code>
Popup.js
<code>var dom; chrome.extension.onRequest.addListener(function(request, sender, sendResponse) { if(request.theDOM != ""){ console.log("popup request: "+request.theDOM); dom = request.theDOM; } }); // HANDLE TAB_1 REQUESTS (EMAIL PAGE) // --------------------------------- $("#send").click(function(){ console.log(dom); // page DOM here } </code>
Спасибо за помощь ;