我有3个嵌套的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 :(得分:0)
我已经有一段时间了,但我相信这是same-origin policy所致。除了iframe来自与外部页面相同的域,协议,端口等之外,内置于浏览器中的此策略不允许您访问iframe中的内容。这可以防止恶意开发人员使用iframe表示Google登录页面,并使用JavaScript访问密码字段内容(cross-site scripting的一个示例)。
答案是,除非iframe页面都在同一个域中,否则这是不可能的。