我正在构建Chrome扩展程序,它包含两个文件:内容脚本和后台脚本。当页面上发生某些事件时,我的内容脚本会监听它们并通过向后台脚本发送消息来做出反应。内容文件中的代码提取:
var port = chrome.runtime.connect({name: "knockknock"});
port.onMessage.addListener(function(msg) {
});
...
function onMouseUp () {
...
port.postMessage({message: important});
...
}
背景代码摘录:
chrome.runtime.onConnect.addListener(function(port) {
port.onMessage.addListener(function(msg) {
if (msg.message)
doSomething(msg.message);
});
});
这样就行了,我的背景会收到消息。
然后它必须创建自己的消息并将其发送到内容脚本。这就是问题所在。在我的doSomething()
函数中,我还有一个函数doSomethingMore()
,我也传递了这个函数。由于此函数位于doSomething()
函数内,doSomething()
函数位于port.onMessage.addListener(function(msg) {}
内,据我所知,此类port.postMessage({newMessage: importantToo});
之类的代码必须正常工作,但事实并非如此。
chrome.runtime.onConnect.addListener(function(port) {
port.onMessage.addListener(function(msg) {
if (msg.message)
doSomething(msg.message);
});
});
function doSomething(mes) {
...
doSomethingMOre(mes);
}
function doSomethingMore(message) {
...
}
我想打开一个新端口是一个坏主意。但也许有人知道如何正确传递我的信息? 非常感谢提前!