我正在构建chrome扩展程序,我需要在injected.js
和content_script.js
之间建立双向通信。我有权在tabs
中使用manifest.json
。我为初学者尝试的是从injected
到content_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_script
到injected
的单向消息传递,甚至可能双向传递的消息吗?
编辑:
在建议将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
的值。
答案 0 :(得分:0)
我已经解决了问题。我所做的是删除并安装了扩展程序,并且该扩展程序可以正常工作。那是我最后一次尝试解决该问题,并且有效。