在我的chrome扩展中,我试图在扩展的内部网页之间交换数据
chrome-extension://myExtensionId/path/to/web/page.html
和内容脚本。
因此,为了使这些数据在不同的内容脚本中持久化,我尝试将其另存为
全局变量
在分机的背景下!我用信息传递来实现。
我的问题是:
当我尝试从后台发送响应时,我会收到此错误:
的事件处理程序出错(未知):类型错误:sendResponse不是
功能
我跟着
documentation's examples
这是我的尝试:
在
scriptOfTheInternalPage.js
以下内容:
var message = {
'order': 'setData',
'varName': 'myArray',
'data': myArray
};
extPort.postMessage(message, function (response) {
console.log('response:\n', JSON.stringify(response));
});
在
background.js
以下内容:
var globals = {
'myArray': [],
...
};
chrome.runtime.onConnect.addListener(function (port) {
port.onMessage.addListener(
function (message, sender, sendResponse) {
console.log(
'the port received this message:\n', JSON.stringify(message), '\n',
(sender.tab) ? ' from tab #' + sender.tab.id : ' from the extension!'
);
if (message.order === 'setData') {
globals[message.varName] = message.data;
sendResponse({'response': 'data saved!'}); //<=====
}
return true; //<=== tried to return true here as well;
});
});
这个错误是否意味着我应该在
onMessage
事件监听器?
我很困惑!我错过了什么?