来自同一域和跨浏览器脚本的iframe

时间:2011-08-04 19:49:11

标签: javascript iframe cross-browser

假设从foo.bar.com/parent.htm提供的页面包含指向bar.com/child.htm的iframe。

位于parent.htm中的脚本可以调用child.htm中定义的函数吗?

似乎这应该起作用,因为parent.htm和child.htm都来自同一个域。我收到了拒绝访问的消息,但我想知道为什么?

谢谢, 约翰

4 个答案:

答案 0 :(得分:1)

从浏览器的角度来看,被认为是同一个域

答案 1 :(得分:1)

这是设计的。为不同客户端使用子域的托管服务需要安全地隔离它们。

答案 2 :(得分:1)

没有。查看维基百科,例如:http://en.wikipedia.org/wiki/Same_origin_policy

  

为了说明,下表概述了典型结果   用于检查URL“http://www.example.com/dir/page.html”。

     

http://v2.www.example.com/dir/other.html - 失败 - 不同的主机(需要完全匹配)

答案 3 :(得分:1)

是,在两个页面中设置document.domain = 'bar.com',然后您可以跨框架访问数据。这仅适用于同一个域,例如您无法将document.domain设置为“not-the-current-domain.com”

或者我通常做的事情:

document.domain = document.domain.replace(/.*?([^\.]+\.[^\.]+)$/, '$1');

document.domain设置为当前根域(例如,剥离任何子域)