从跨域iframe访问父窗口变量

时间:2010-09-10 08:27:47

标签: iframe cross-domain

内部http://mydomain1.com/index.html

<html>
<body>
<script type="text/javascript">
  var a = 1;
</script>
<iframe src="http://domain2.com/test2.html"></iframe>
</body>
</html>

内部http://domain2.com/test2.html

<script type="text/javascript">
  alert(parent.a); // forbidden
</script>

有任何解决方法吗?

3 个答案:

答案 0 :(得分:2)

如果您需要与其他框架进行通信,则可以使用postMessage。这仅适用于现代浏览器(IE8,FF3,Opera 9,Chrome)。

由于安全原因(Same Origin Policy),您无法真正拥有对跨域框架的完全访问权限。

答案 1 :(得分:1)

  • 读取数据跨域会带来安全风险,因为另一个域上的数据可能包含敏感信息(即身份验证令牌)。
  • 可以将数据发布到其他域。所以在这种情况下,也许你可以试试:

    • domain2.com/test2.html向mydomain1.com/index.html发布消息,询问“a”值。
    • mydomain1.com/index.html收到消息后可以通过将“a”值发布到domain2.com/test2.html来回复
  • 这意味着您需要在两个域上设置事件侦听器,以接收从其他域发布的消息。

答案 2 :(得分:0)

你可以从iframe访问父DOM节点,但你不能对父窗口变量这样做。