页面 A.com 有2个iframe B.com/page1 和 B.com/page2 。 这是A.com的代码:
<html><body>
<iframe src="b.com/page1" name="iframe1" id="iframe1">
<iframe src="b.com/page2">
</body></html>
我想从 B.com/page2 在 B.com/page1 上执行js功能。 当父级来自同一域而不是跨域方案时,以下两个示例都很有效:
parent.window.frames['iframe1'].SomeFunction(args);
或
parent.document.getElementById('iframe1').contentWindow.SomeFunction(args);
有什么办法吗?
答案 0 :(得分:8)
而不是
parent.window.frames['iframe1'].SomeFunction(args);
使用
parent.frames['iframe1'].SomeFunction(args);
您可以遍历可以引用的任何窗口的frames
集合,但在这种情况下,您试图遍历window
的递归parent
属性(这是窗口)。这是不允许的。
答案 1 :(得分:2)
不,浏览器不允许根本不在同一个域的iframe之间进行交互。
答案 2 :(得分:0)
正如Aaron已经告诉过你的那样,浏览器不允许这样做,但是有很多方法可以解决它。你需要创建一个小黑客。 Eugene Gladyshev有post on it on his blog。
答案 3 :(得分:0)
正如Aaron所说,不允许在iframe之间进行交互,但你应该看一下easyXDM,它有助于javascript中的跨域通信:
以下是您可能正在寻找的示例:
http://easyxdm.net/wp/2010/03/17/sending-and-receiving-messages/