【问题标题】:Message Passing from website to Chrome extension background script [duplicate]消息从网站传递到 Chrome 扩展后台脚本 [重复]
【发布时间】:2015-11-09 08:47:51
【问题描述】:

我正在尝试将一些数据从我的网站传送到我的扩展程序的内容脚本,该脚本应该将其发送到后台脚本以将其存储在我的扩展程序的 localStorage 中。 到目前为止,我所做的如下: 在我的网页中,该脚本正在与我的扩展程序的内容脚本进行通信,其中一个内容脚本会收到一些消息,它会在控制台“收到消息”中记录它

我的网页:

     <script>
     var go = function() {
    var event = document.createEvent('Event');
    event.initEvent('appid');
    document.dispatchEvent(event);
      }
     </script>
  <a href="javascript:go();">Click me</a>   

我想要实现的只是让网页向 CS 发送一个 ID 并将其传递给后台脚本(因为据我所知,CS 无法处理在本地存储中存储数据)。 任何人都可以提出必要的修改吗?

【问题讨论】:

  • 内容脚本中的事件监听器是什么样的? IIRC,内容脚本可以访问本地存储以及 chrome 扩展的存储 api。

标签: javascript google-chrome-extension


【解决方案1】:

在您的内容脚本中,您需要通过

发送到后台
var request={aaa:'bbb'};//object
chrome.runtime.sendMessage(request);

在后台页面,你需要

chrome.runtime.onMessage.addListener(function(request, sender)
{
 console.log(request);
 if(request.aaa)
 {
    console.log(request.aaa)//log:bbb
    //do sonething...
 }
}

查看文档以获取更多信息: https://developer.chrome.com/extensions/messaging

【讨论】:

  • 感谢这帮助我将消息从 CS 传递到后台脚本。但是如何定义网页中的数据。也就是说,假设我想从网页中传递一个ID给Content脚本,我应该把它放在网页的什么地方,而内容脚本又是如何获取的呢?
  • 这取决于你如何在网页中包含'ID',你可以在CS中触发一个函数来搜索网页的DOM,然后得到我猜的值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-07
  • 2018-08-15
  • 1970-01-01
相关资源
最近更新 更多