javascript - 内容脚本、后台脚本和弹出脚本之间的通信

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

在发送端:即来自内容脚本。

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>

在接收端:即在后台脚本中。*

背景.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

最佳答案

在manifest.json

添加存储权限

"permissions": ["storage"]

在 contentscript.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"
 });

在background.js

从 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 
  });
}

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

关于javascript - 内容脚本、后台脚本和弹出脚本之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22477645/

相关文章:

html - 有没有办法让 title= 属性在 Chrome 上工作?

java - glassfish 中的特殊字符不起作用

javascript - 如何通过 native 消息传递 API 将用户凭据传递给 chrome

google-chrome-extension - 如何在事件选项卡中获取 URL 并在变量中使用它

javascript - 如何使用浏览器扩展/插件强制聚焦浏览器窗口?

javascript - 特殊字符前换行

javascript - 如何调用另一个文件中名为 "toggleDrawer"且未导出的函数?

javascript - 单击按钮从附近的输入中获取值?

javascript - 将 kendo-ui 数据源数据与多个下拉小部件一起使用

javascript - 检查元素的 scrollHeight 有时会返回 0