Как я могу общаться между 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>

Спасибо за помощь ;

Ответы на вопрос(1)

Ваш ответ на вопрос