从主文档中的JavaScript获取IFrame的文档
我有这个HTML代码:
<html> <head> <script type="text/javascript"> function GetDoc(x) { return x.document || x.contentDocument || x.contentWindow.document; } function DoStuff() { var fr = document.all["myframe"]; while(fr.ariaBusy) { } var doc = GetDoc(fr); if (doc == document) alert("Bad"); else alert("Good"); } </script> </head> <body> <iframe id="myframe" src="http://example.com" width="100%" height="100%" onload="DoStuff()"></iframe> </body> </html>
问题是我收到消息“坏”。 这意味着iframe的文档没有正确的获取,而GetDoc函数返回的是父文档。
如果你告诉我我的错在哪里,我会很感激。 (我想在IFrame中获取文档。)
谢谢。
您应该可以使用以下代码访问IFRAME中的文档:
document.getElementById('myframe').contentWindow.document
但是,如果框架中的页面是从其他域(例如google.com)加载的,则无法执行此操作。 这是因为浏览器的同源策略 。
问题是,在IE中(这是我认为你正在testing), <iframe>
元素有一个document
属性引用包含iframe的文档,这是在contentDocument
或contentWindow.document
属性之前使用。 你需要的是:
function GetDoc(x) { return x.contentDocument || x.contentWindow.document; }
而且, document.all
在所有浏览器中都不可用,而且是非标准的。 使用document.getElementById()
来代替。