从注入脚本到内容脚本的消息不起作用

时间:2018-12-02 11:20:09

标签: javascript google-chrome-extension

我正在构建chrome扩展程序,我需要在injected.jscontent_script.js之间建立双向通信。我有权在tabs中使用manifest.json。我为初学者尝试的是从injectedcontent_script发出一条消息。我正在使用这个:

// Content script
window.addEventListener("getChromeData", function(data) {
  console.log( data ) // CustomEvent {isTrusted: false, detail: null, type: "getChromeData", target: Window, currentTarget: Window, …}
}, false);

// Injected script
window.dispatchEvent(new CustomEvent("getChromeData", {data: 'whatever'}));

问题是,我在内容脚本中有一个响应,但没有从data发送的那个injected对象。我只收到了CustomEvent个没有该数据的对象。

有人可以指导我完成从content_scriptinjected的单向消息传递,甚至可能双向传递的消息吗?

编辑:

在建议将data编辑为detail属性后,这就是我的意思

// Injected script
window.dispatchEvent(new CustomEvent("getChromeData", {detail: {
        first: 're',
        two: 'two'
}}));

// Content script
window.addEventListener("getChromeData", function(data) {
  console.log( data ) // Still getting CustomEvent {isTrusted: false, detail: null, type: "getChromeData", target: Window, currentTarget: Window, …}
}, false);

我已经编译,重新加载了扩展名并重新加载了页面。尽管如此,我的返回对象仍然有detail指向null的值。

1 个答案:

答案 0 :(得分:0)

我已经解决了问题。我所做的是删除并安装了扩展程序,并且该扩展程序可以正常工作。那是我最后一次尝试解决该问题,并且有效。