从主文档中的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的文档,这是在contentDocumentcontentWindow.document属性之前使用。 你需要的是:

 function GetDoc(x) { return x.contentDocument || x.contentWindow.document; } 

而且, document.all在所有浏览器中都不可用,而且是非标准的。 使用document.getElementById()来代替。