HTML5 - 跨浏览器iframe postmessage - 父与子通信

Dra*_*aco 7 javascript html5 postmessage cross-browser

我写了一个内容脚本,将iframe注入任何网站(因此不同的域).

我需要父网站向子iframe发送一些信息,但我找不到办法.

代码

var targetFrame = $('#myIframe')[0];
targetFrame.contentWindow.postMessage('the message', '*');
Run Code Online (Sandbox Code Playgroud)

以某种方式不起作用,我得到一个Cannot call method 'postMessage' of undefined错误.但是当我在Chrome的控制台中直接尝试相同的代码时,它确实有用.

我将postMessage从子节点发送到父节点没有问题,但只需要一种方法让父节点向子节点iframe发送消息.

Tyl*_*coe 1

我已经成功使用以下库:

http://easyxdm.net/wp/

它不需要任何 flash/silverlight,只需要 javascript。并且它最早兼容 IE6。

启动并运行需要花费一些时间,但是一旦启动,一切就变得非常顺利。

请记住,如果您在其他域上打开的 iFrame 使用不同的协议(HTTP 与 HTTPS),浏览器将发出警告,阻止您的脚本运行(除非用户表示他们愿意接受风险)。如果您可以访问这两种协议,那么在 HTTP 和 HTTPS 上托管 iFrame 的内容并相应地加载适当的脚本可能是明智之举。

祝你好运!