好的,所以我在manifest.json文件中有这个:
"background": {
"scripts": ["background.js"],
"persistent": true
},
在我的background.js脚本中我有这个:
chrome.runtime.onConnect.addListener(function(port) {
port.onMessage.addListener(function(msg) {
// now, I want to forward `msg` to the extension process itself
});
});
如上所示,我想将后台脚本中的消息发送到我的扩展程序。
使用以下方法是正确的方法: https://developer.chrome.com/extensions/messaging#connect
所以我想我在background.js中执行此操作:
var port = chrome.runtime.connect('my-extension-id');
port.postMessage('foo');
我猜我的后台脚本已经有了某种默认的连接/通道扩展,我是否必须手动设置它?我想如果我想在不同的扩展中进行通信,我只需要手动设置它。
更新
我现在在background.js
chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) {
console.log('background.js received a message');
sendResponse({farewell: "goodbye"});
sendResponse({farewell: "goodbye"});
sendResponse({farewell: "goodbye"});
sendResponse({farewell: "goodbye"});
});
看起来sendResponse只能被调用一次。我需要打开一个持久的" background.js和弹出窗口之间的连接,以便我可以随时间传输多条消息。