2011-05-15 62 views
0

我创建了一个iframe,它是相同的域,只是一个不同的子域,我想从iframe中获取链接src,用“document.getElementsByTagName('a')[5]; “从创建的iframe中获取数据

我该怎么做?

回答

0

为了避免同源策略,您应该在主页面和iframe中使用document.domain - 将其设置为主页面的域。因此,如果您的主页位于域foo.com,并且您的iframe从bar.foo.com加载,则在这两个页面中设置document.domain = 'foo.com'。即使将其设置为相同的值,您也必须为主页执行此操作 - 请参阅下面的注释。

现在,为了获得元素,你可以做什么在this SO answer描述:

var iframe = document.getElementById('iframeId'); 
var innerDoc = iframe.contentDocument || iframe.contentWindow.document; 

更新

的MDC有这样一段话:

的Mozilla区分一个从未设置过的document.domain属性尽管该属性在两种情况下都返回相同的值,但它仍设置为与文档的URL相同的域。如果一个文档同时将document.domain设置为相同的值,表明其合作意图,或者没有设置document.domain,并且URL中的域相同(实现),则允许一个文档访问另一个文档。如果不是这个特殊的政策,每个网站都会受到其子域中的XSS(例如,https://bugzilla.mozilla.org可能受到https://bug * .bugzilla.mozilla.org上的错误附件的攻击)。

因此,两个iframe和包括页必须为document.domain

相同的值