inner div javascript explorer getelementbyid

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.

Aquí hay un artículo que resume mejor .


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.