通过JavaScript进行IFrame
IFrame
通信是否有任何方法
答案 0 :(得分:3)
如果iFrame共享相同的域来源,您可以直接从另一个iFrame中调用Javascript或读/写变量。您将获得iFrame对象并从中获取Web页面的窗口对象。
如果iFrame没有相同的来源,那么现代浏览器将阻止您与普通的javascript通信。传递信息的唯一方法是使用消息传递,这是一种相对较新的浏览器功能,需要在两个iFrame的代码之间进行预先合作。
答案 1 :(得分:2)
正如jfriend00所说,你不能跨域调用javascript。这会违反Same Origin Policy。
HTML5的一项新功能是postMessage。这允许您向iframe发送消息。然后,它需要iframe内容上的消息监听器来处理您的消息。
答案 2 :(得分:1)
答案 3 :(得分:1)
如其他答案中所述,在iframe和父文档之间进行通信有几种不同的方式,但需要控制iframe文档。 (postmessage等)然而,似乎这将很快变得容易,因为webkit已经为iframe实现了新的属性 - 一个控制这种行为并且特别允许删除iframe限制 - 即相同的域。虽然有趣的是它唯一的html5 / webkit,但显示了iframes http://www.w3schools.com/html5/att_iframe_sandbox.asp
的未来可能性的承诺答案 4 :(得分:1)
我们可以通过使用dojo库dojox来实现iframe之间的通信方式dojox.cometd。
使用此功能,我们可以将每个javascript函数推送到另一个iframe或其他页面。
我们可以使用不同的浏览器或iframe在不同的计算机之间使用相同的域进行通信,但其局限性是我们无法使用不同的域进行通信。
答案 5 :(得分:1)
如果你需要的是将值从一个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;
我希望它有所帮助。