2011-05-17 106 views
7

说,一个HTML页面(Page.htm)包含以下...抢全局变量从嵌入的iframe

<script type="text/javascript"> 
    var vara = 'varA'; 
</script> 

现在这个页面加载到一个iframe从另一个页面......

<iframe id="child_frame" src="http://mysite.com/Page.htm" /> 

从父页面,我想从Page.htm中获取全局'vara'的值。

无以下行工作的...

window.frames['child_frame'].window.vara; 

    window.frames['child_frame'].window['vara']; 

    window.frames['child_frame'].contentWindow['vara']; 
    // in fact contentWindow returns undefined!! 

任何帮助,将不胜感激!

UPDATE

这个问题看多,并试图可用来解决这个问题的各种库后,我顿悟了,因为我有IIS在两个主要和iframe嵌入网站的控制,我可以通过为各个网站使用相同的基本URL在跨域脚本规则中工作。此外,解决问题的库似乎需要不断更新,因为浏览器供应商通过持续更新来加强安全性。要避免浏览器试图阻止你做什么,必须始终更新解决方法确实是一件苦差事。

回答

4

你的第一个语法应该可以工作IF你在相同的doamin

如果IFRAME正在从另一个域加载一个页面,那么您将无法访问它。

+1

啊,有道理。你能扭转吗?孩子iframe可以看到其父(不同域)的全局变量吗? – 2011-05-17 18:59:17

+1

@John:会更糟,你不觉得吗?无论如何,你可能对[this]感兴趣(http://softwareas.com/cross-domain-communication-with-iframes) – neurino 2011-05-17 19:04:50

+1

@John你可以通过使用父母。例如,“parent.myGlobalVarInPageHtm.id”。 – 2012-06-06 21:48:50

2

此:

<iframe id="child_frame" src="http://" /> 

应该是:

<iframe name="child_frame" src="http://" /> 

iframe的属性 “ID” 应改为 “名”。