只需通过 parent 和 frames.frameId 同 contentWindow 和 contentDocument 属性,记住 同源政策
parent
frames.frameId
contentWindow
contentDocument
如果iFrame共享相同的域来源,您可以直接调用Javascript或从另一个iFrame读取/写入变量。您将获得iFrame对象并从中获取Web页面的窗口对象。
如果iFrame没有相同的来源,那么现代浏览器将阻止您与普通的javascript通信。传递信息的唯一方法是使用消息传递,这是一种相对较新的浏览器功能,需要在两个iFrame的代码之间进行预协作。
如其他答案中所述,在iframe和父文档之间进行通信有几种不同的方式,但需要控制iframe文档。 (postmessage等)然而,似乎这将很快变得容易,因为webkit已经为iframe实现了新的属性 - 一个控制这种行为并且特别允许删除iframe限制 - 即相同的域。虽然有趣的是它唯一的html5 / webkit,但显示了iframe很酷的未来可能性 http://www.w3schools.com/html5/att_iframe_sandbox.asp
正如jfriend00所说,你不能跨域调用javascript。这会违反 同源政策 。
HTML5的一个新功能是 的postMessage 。这允许您向iframe发送消息。然后,它需要iframe内容上的消息监听器来处理您的消息。
我们可以通过使用dojo库dojox来实现iframe之间的通信方式 dojox.cometd 。
使用这个我们可以将每个javascript函数推送到另一个iframe或其他页面。
我们可以使用不同的浏览器或iframe使用相同的域在不同的计算机之间进行通信,但其局限性是我们无法使用不同的域进行通
如果您需要将值从一个iFrame传递给另一个iFrame,则可以通过在父iFrame中设置隐藏字段,然后从子项访问它来实现:
它会是这样的:
在父母:
var input = document.createElement("input" ); input.setAttribute( "type", "hidden" ); input.setAttribute( "id", "combinationType" ); input.setAttribute( "value", "very cool!!!" ); document.getElementsByTagName( 'div')[0].appendChild(input);
在孩子:
var val = window.parent.document.getElementById('combinationType').value;
我希望它有所帮助。