Chorme插件如何与浏览器通讯?

anshengme
  • 1
新手上路,请多包涵

主要是想实现如下功能:

  1. 开发一个Chorme插件,修改window的属性,比如添加一个window.foo=bar,然后JS和控制台就可以访问window.foo
  2. 插件通过chrome.runtime.onMessage.addListener创建一个监听器,接收消息的,可以通过JS或者控制台向这个监听器发送消息,并且可以得到回应

我现在可以实现下面的消息链:

custom.js --> content-script.js <--> background.js

现在遇到的问题是content-script.js接收到了background.js返回的消息,但是不知道怎么把消息返回给custom.js,还望大佬们指点下

回复
阅读 489
1 个回答

content.js 和 custom 处于不同沙箱,不能访问对方的 window。不过它们共享 DOM,所以最简单的办法,直接通过 document.body.dispatchEvent() 把你的消息发送出去就好。

如果你的需求比较复杂,可以在 custom.js 里使用 chrome.runtime.connect(),将网页连接到插件的 background.js,然后使用 chrome.runtime.sendMessage() 通讯。

宣传栏