Communication between contentscript, background and popup scripts

一曲冷凌霜 提交于 2020-01-24 00:48:11

问题


On sending side : i.e from contentscript.

contentscript.js:

<script> 
    //some DOM code to obtain values to store in 'marks' array.


    //here I'm sending marks array to background.js.
    // 1) Am I sending it right?
    chrome.runtime.sendMessage(marks);

</script>

On receiving end : i.e in background script.*

background.js:

chrome.runtime.onMessage.addListener(function(MessageSender sender, function     
    sendResponse){
     /* 2) what should be here */ });

3) here , how can I collect(store) the array variable passed from contentscript.

4) Now,from background.js can I directly call any function in popup.js(script file
linked to popup.html).

Can anyone please answer the above 4 questions?
Thanks in advance!

Inspecting my popup,gave me following error :


回答1:


in manifest.json

add storage permission

"permissions": ["storage"]

in contentscript.js

save your data in the local storage Google Chrome : Chrome Storage API

var data = ''; //set your data here
    chrome.storage.local.set({
         'myVariable': data
        });

use sendMessage to call the background page : Chrome messaging API

 chrome.runtime.sendMessage({
     greeting: "myAction"
 });

in background.js

get the message from contentscript.js

chrome.runtime.onMessage.addListener(
    function (request, sender, sendResponse) {
    if (request.greeting == "myAction") {
        collectData();
    }
 });

define the collectData() function

function collectData() {
  chrome.storage.local.get('myVariable', function (items) {
    console.log(items); //your data is on items.myVariable 
  });
}

to call popup.js function from background.js use the messaging API



来源:https://stackoverflow.com/questions/22477645/communication-between-contentscript-background-and-popup-scripts

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!