2015-09-09 66 views
3

我有3个嵌套iframe,我想要访问第三个iframe中的元素(链接)。从其他iframe字符串获取iframe元素

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

var secondIframe = innerDoc.getElementById('google_ads_frame3'); 
var secondinnerDoc = secondIframe.contentDocument || secondIframe.contentWindow.document; 

var treedIframe = document.getElementById('ad_iframe'); 
var secondinnerDoc = treedIframe.contentDocument || treedIframe.contentWindow.document; 

var Link = secondinnerDoc.getElementById('aw0'); 

但是我在尝试访问时出错。

Uncaught DOMException: Failed to read the 'contentDocument' property from 'HTMLIFrameElement': Blocked a frame with origin "http://localhost:63342" from accessing a cross-origin frame. 

我怎样才能访问<a>标签?

回答

0

对我而言已经有段时间了,但我相信这是由于same-origin policy。该内置于浏览器的策略不允许您访问iframe中的内容,除非iframe来自与外部页面相同的域,协议,端口等。这样可以防止恶意开发者拥有一个说明Google登录页面的iframe,并且可以使用JavaScript访问密码字段内容(cross-site scripting的一个示例)。

答案是,除非iframe页面都在同一个域上,否则这是不可能的。