为什么无法在Chrome扩展程序中传递地图数据?

时间:2018-07-16 11:05:38

标签: javascript google-chrome google-chrome-extension

我想将消息从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}

现在我想知道为什么无法在扩展程序中传输地图数据。非常感谢有人能帮助解决这个问题。

1 个答案:

答案 0 :(得分:0)

  

扩展及其内容脚本之间的通信通过使用消息传递来进行。任何一方都可以侦听从另一端发送的消息,并在同一通道上进行响应。消息可以包含任何有效的 JSON对象(空,布尔值,数字,字符串,数组或对象)。

来自Chrome Extension Tutorial