0

我正在开发一个 Edge 扩展,我需要从框架文档(不是顶部文档,顶部文档工作正常)向内容脚本发送消息。
如下:

`contentscript.js
window.addEventListener("message", function(event) {
    console.log("window top message...event:");
    console.log(event);
});`

从框架文档发送消息,其中包含:

window.top.postMessage("Hi, I am from frame", "*").

在控制台面板中,我可以看到window top message...event:然后浏览器重新加载页面。消息好像被屏蔽了。
扩展可以从 github 获得
重现步骤:
加载扩展,打开Google,打开控制台面板,切换到 Frame,然后输入

window.top.postMessage("Hi, I am from frame", "*").

有人可以帮忙吗?

4

1 回答 1

1

如果您有一个背景页面,并且您contentscript.js可以访问browser.对象,那么便宜的'n'easy方法可能是将消息退回到扩展程序并返回,如下所示:

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}你的内容脚本。所有的帧,包括 top 都应该得到这个消息。

于 2017-05-12T11:19:37.693 回答