javascript - div - Error de getElementById.contentDocument en IE
set innertext javascript (6)
<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>
Después de hacer clic, Firefox devuelve [objeto HTMLDocument]. Internet Explorer devuelve indefinido.
¿Cómo puedo seleccionar el elemento iView con Internet Explorer? Gracias.
Desde esta página :
Mozilla admite el estándar W3C para acceder al objeto de documento de iframe a través de IFrameElm.contentDocument, mientras que Internet Explorer requiere que acceda a él a través de document.frames ["name"] y luego acceda al documento resultante.
Entonces necesitas detectar el navegador y en IE hacer algo como esto en su lugar:
document.frames[''iView''].document;
El equivalente en contentDocument
navegadores a contentDocument
(incluido el propio Firefox, donde funciona contentDocument
) es contentWindow.document
.
Así que prueba:
alert(document.getElementById(''iView'').contentWindow.document);
contentWindow
le proporciona una referencia al objeto de la window
del iframe, y por supuesto .document
es solo el objeto de documento DOM para el iframe.
Haz algo como esto:
var myFrame = document.getElementById(''iView'');
var frameDoc = myFrame.contentDocument || myFrame.contentWindow;
if (frameDoc.document){
frameDoc = frameDoc.document;
}
alert(frameDoc);
Ver esta página para más detalles.
Parece que quieres obtener los contenidos del iframe, ¿no?
IE7 y FF2:
var iframe = document.getElementById(''iView'');
alert(iframe.contentWindow.document.body.innerHTML);
Utilice la detección de características, ya que contentDocument
es compatible con IE 8:
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
}
contentWindow.document.body.innerHTML
está trabajando para mí en Internet Explorer y Firefox, mientras que
contentDocument.body.innerHTML
Solo funcionará en Firefox.