从创建的iframe中获取数据

时间:2011-05-15 21:08:29

标签: javascript iframe

我正在创建一个同一个域的iframe,只是一个不同的子域,我想从iframe中获取一个链接src,其中包含“document.getElementsByTagName('a')[5];”

我该怎么做?

1 个答案:

答案 0 :(得分: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,也没有设置document.domain中的域是相同的(实现),则允许访问另一个文档。如果不是这个特殊政策,每个网站都会受到其子域名的XSS限制(例如,https://bugzilla.mozilla.org可能会被https://bug * .bugzilla.mozilla.org上的错误附件攻击。

因此,iframe和包含页面都必须为document.domain

设置相同的值