我想将消息从content.js
传递到popup.js
。但是我发现我无法传递地图数据。这是我的代码:
content.js
data=new Map();
data.set('foo','bar');
chrome.runtime.onMessage.addListener(
function (message, sender, sendResponse) {
switch (message.content) {
case "videolinks":
sendResponse(linkMap);
break;
default:
break;
}
}
)
popup.js
chrome.tabs.query({active: true, currentWindow: true}, (tabs) => {
chrome.tabs.sendMessage(tabs[0].id, {content: "videolinks"}, (response) => {
console.log(response);
});
});
当我在扩展中打开DevTools并查看日志时。我有一个空物体。 然后我将数据更改如下:
data={};
data['foo']='bar';
此后,我重新加载了扩展名并再次查看日志,它按预期显示了{foo: bar}
。
现在我想知道为什么无法在扩展程序中传输地图数据。非常感谢有人能帮助解决这个问题。
答案 0 :(得分:0)
扩展及其内容脚本之间的通信通过使用消息传递来进行。任何一方都可以侦听从另一端发送的消息,并在同一通道上进行响应。消息可以包含任何有效的 JSON对象(空,布尔值,数字,字符串,数组或对象)。