<html>
<script type="text/javascript">
function func() {
alert(document.getElementById('iView').contentDocument);
}
</script>
<body>
<iframe id="iView" style="width:200px;height:200px;"></iframe>
<a href="#" onclick="func();">click</a>
</body>
</html>
点击后,Firefox返回[object HTMLDocument]。 Internet Explorer返回undefined。
如何使用Internet Explorer选择iView元素?感谢。
答案 0 :(得分:43)
相当于contentDocument
的跨浏览器(包括Firefox本身,其中contentDocument
工作)是contentWindow.document
。
所以试试:
alert(document.getElementById('iView').contentWindow.document);
contentWindow
为您提供对iframe的window
对象的引用,当然.document
只是iframe的DOM Document对象。
答案 1 :(得分:12)
来自this page:
Mozilla支持通过IFrameElm.contentDocument访问iframe文档对象的W3C标准,而Internet Explorer要求您通过document.frames [“name”]访问它,然后访问生成的文档。
所以你需要检测浏览器并在IE上做这样的事情:
document.frames['iView'].document;
答案 2 :(得分:3)
您似乎想要获取iframe的内容吗?
IE7和FF2:
var iframe = document.getElementById('iView');
alert(iframe.contentWindow.document.body.innerHTML);
答案 3 :(得分:3)
使用功能检测,因为IE 8支持contentDocument
:
var iframe = document.getElementById("iView");
var iframeDocument = null;
if (iframe.contentDocument) {
iframeDocument = iframe.contentDocument;
} else if (iframe.contentWindow) {
// for IE 5.5, 6 and 7:
iframeDocument = iframe.contentWindow.document;
}
if (!!iframeDocument) {
// do things with the iframe's document object
} else {
// this browser doesn't seem to support the iframe document object
}
答案 4 :(得分:2)
contentWindow.document.body.innerHTML
在Internet Explorer和Firefox中为我工作,而
contentDocument.body.innerHTML
只适用于Firefox。
答案 5 :(得分:1)
做这样的事情:
var myFrame = document.getElementById('iView');
var frameDoc = myFrame.contentDocument || myFrame.contentWindow;
if (frameDoc.document){
frameDoc = frameDoc.document;
}
alert(frameDoc);
有关详细信息,请参阅this page