javascript - 如何在框架和边缘扩展内容脚本之间进行通信?

标签 javascript microsoft-edge-extension

我正在开发一个 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/

相关文章:

javascript - 覆盖一个 div 并让它在单击链接后消失

javascript - 为 JS 对象动态分配属性

javascript - 多页面模板上的 jQuery 移动滚动/页面 chop 问题

javascript - Microsoft Edge WebNavigation 重定向

javascript - Microsoft Edge 扩展中未显示上下文菜单

javascript - 尽管更新了 redux 状态,但组件不会重新渲染

javascript - knockout 验证异步验证器 : Is this a bug or am I doing something wrong?

javascript - Microsoft Edge 是否支持用户脚本?

javascript - 边缘扩展 HTTP 请求中出现错误 0x2efd

javascript - Microsoft Edge 扩展 : will runtime. onInstalled 在加载未打包的扩展时发生火灾?