我试图围绕这些扩展如何工作。现在我正在从内容脚本向后台发送消息。我尝试了单个消息和长期连接。对于每个页面,控制台注册多个日志......我不知道为什么。脚本很简单:
content.js
chrome.runtime.sendMessage({hi: "hi"}, function(response) {});
//or
//var port = chrome.runtime.connect({name: "test"});
//port.postMessage({hi: "hi"});
background.js
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
console.log(sender.tab);
console.log(request.hi);
});
//OR
/*chrome.runtime.onConnect.addListener(function(port) {
port.onMessage.addListener(function(msg) {
console.log(msg);
});
});*/
的manifest.json
"background": {
"scripts": ["background.js"],
"persistent": false
},
"content_scripts": [{
"matches": ["http://*/*", "https://*/*"],
"js": ["content.js"],
"run_at": "document_end",
"all_frames": true
}],
"permissions": [
"tabs",
"<all_urls>"
]
在每种情况下,就像我说的,我在后台页面中得到三个日志。为什么?我认为这可能是由于我打开的标签数量,但是日志显示了发件人信息,它表示它来自同一个标签。
更多:当我刷新此问题时,我只获得一个日志条目(每个块一个条目,如第一个注释中所示)。当我刷新谷歌搜索结果或Google扩展程序API页面时,我会收到多个日志。