Jak mogę się komunikować między background.js a popup.js?

Mam rozszerzenie z skryptem w tle:

<code>"background": {
    "scripts": ["scripts/background.js"]
  },
</code>

i skrypt treści:

<code>"content_scripts": [
    {
      "matches": ["*://*/*"],
      "js": ["scripts/content_script.js"]
    }
  ],
</code>

wyskakujące okno(popup.html)i skrypt wyskakujący(popup.js). popup.js nie jest rejestrowany w manifeście i zajmuje się wyglądem popup.html oraz nasłuchiwaniem działań użytkownika w popup.html, takich jak kliknięcie przycisku.

Chcę zrobić rozszerzeniee-maile na stronie bieżącej kartyi do tego potrzebuję strony DOM zcontent_script, przekazuj dane (DOM) dobackground script. Po tym, gdy użytkownik wywoła zdarzenie w popup.html, popup.js przechwyci to zdarzenie i chcę, aby popup.js mógł pobrać przekazane dane (DOM) z background.js. Jak mogłem to zrobić? Więc moje pytanie brzmi: jak mogę komunikować się między background.js i popup.js?

Znalazłem odpowiedź na moje własne pytanie:

Dzięki Elvis, myślę, że rozwiązałem problem; Muszę tylko uzyskać DOM strony w skrypcie treści, ale moim pytaniem było rozwiązanie:

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>

Dzięki za pomoc ;)

questionAnswers(1)

yourAnswerToTheQuestion