我正在开发一个 Edge 扩展,我需要从框架文档(不是顶部文档,顶部文档工作正常)向内容脚本发送消息。
如下:
`contentscript.js
window.addEventListener("message", function(event) {
console.log("window top message...event:");
console.log(event);
});`
从框架文档发送消息,内容为:
window.top.postMessage(“嗨,我来自框架”,“*”)。
在控制台面板中,我可以看到窗口顶部消息...事件:
,然后浏览器重新加载页面。看来这条消息被屏蔽了。
The extension can be got from github .
重现步骤:
加载扩展,打开Google ,打开控制台面板,切换到框架,然后输入
window.top.postMessage("嗨,我来自框架", "*")。
有人可以帮忙吗?
最佳答案
如果您有后台页面,并且您的 contentscript.js
可以访问 browser.
对象,那么便宜又简单的方法可能是将消息退回到扩展程序然后像这样返回:
contentscript.js
browser.runtime.sendMessage({name: 'bounce', payload: {name: hello}});
background.js
browser.runtime.onMessage.addListener(function (request, sender) {
if (request.name === 'bounce') {
browser.tabs.sendMessage(sender.tab.id, request.payload);
}
});
只需在内容脚本中监听{name: hello}
即可。所有框架(包括顶部)都应该收到此消息。
关于javascript - 如何在框架和边缘扩展内容脚本之间进行通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43910020/