@
janrone 第二点是说不晓得什么原因我这边看起来runtime.onMessage居然是undefined,奇怪...不管了
port很简单,几个要点:
1. 你要在你注入的content script当中,声明并且连接你的port,同时添加onMessage事件
例如:
var port = chrome.extension.connect({name:'raw_page'});
port.onMessage.addListener(function(msg) {
......
2. 在你的background中,等待连接,并且,捕捉这个接口,同时设定listener动作
例如:
chrome.extension.onConnect.addListener(function(port) {
switch(
port.name){
case ('raw_page'):
rawPagePort = port;
rawPagePort.onMessage.addListener(function(msg) {
.....
你可以不用这么复杂,之所以用name之类的是,当你扩展需要有很多个不同页面向后台发起多个port连接时,有了name,你可以清除的分清和控制不同的port,从而可以清楚的向该port定向发送;
3. 需要互通信息的时候,很简单,在background里直接postMessage好了:
rawPagePort.postMessage({message:'show message',value:value});
4. 反之依然,当你需要从content script向background发送消息,也只需要对着这个port做postMessage就OK了。