内容脚本,背景和弹出脚本之间的通信

时间:2014-03-18 11:12:35

标签: javascript google-chrome google-chrome-extension message-passing

在发送方:即来自contentcript。

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>

接收端:即后台脚本。*

background.js:

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

3)在这里,我如何收集(存储)从contentscript传递的数组变量。

4)现在,从background.js可以直接调用popup.js中的任何函数(脚本文件
       链接到popup.html)。

有人可以回答上述4个问题吗?  提前谢谢!

检查我的弹出窗口,给了我以下错误:

enter image description here

1 个答案:

答案 0 :(得分:3)

manifest.json中的

添加存储权限

"permissions": ["storage"]
contentcript.js中的

将您的数据保存在本地存储空间Google Chrome中:Chrome Storage API

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

使用sendMessage调用后台页面:Chrome messaging API

 chrome.runtime.sendMessage({
     greeting: "myAction"
 });
背景中的

从contentscript.js

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

定义collectData()函数

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

从background.js调用popup.js函数使用消息传递API