我写了一个内容脚本,将iframe注入任何网站(因此不同的域).
我需要父网站向子iframe发送一些信息,但我找不到办法.
var targetFrame = $('#myIframe')[0]; targetFrame.contentWindow.postMessage('the message','*');
以某种方式不起作用,我得到一个无法调用未定义错误的方法’postMessage’.
但是当我在Chrome的控制台中直接尝试相同的代码时,它确实有用.
我将postMessage从子节点发送到父节点没有问题,但只需要一种方法让父节点向子节点iframe发送消息.
解决方法
我最近编写了将postMessage作为iframe的代码,我遇到了一个类似的问题,它说contentWindow是未定义的.
就我而言,我的iframe还不是DOM树的一部分,它是由document.createElement(‘iframe’)创建的变量.
一旦我将它隐藏(宽度和高度0px,隐藏可见性)到页面正文中,contentWindow就不再是未定义的,一切都按预期工作.
当我处理项目时,我发现postMessage的Mozilla Developer Network页非常有用.