如何在框架和Edge Extension内容脚本之间进行通信?

时间:2017-05-11 08:16:38

标签: javascript microsoft-edge-extension

我正在开发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:,然后浏览器重新加载页面。消息似乎被阻止了 The extension can be got from github
重现的步骤:
加载扩展,打开Google,打开控制台面板,切换到Frame,然后键入

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

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

如果你有一个背景页面,并且你的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}。包括top在内的所有帧都应该收到此消息。