Pregunta

<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 clic, Firefox vuelve [HTMLDocument objeto]. Internet Explorer vuelve indefinido.

¿Cómo puedo seleccionar el elemento iView con Internet Explorer? Gracias.

¿Fue útil?

Solución

esta página :

  

Mozilla compatible con el estándar W3C de acceso a objeto de documento de marco flotante a través IFrameElm.contentDocument, mientras que Internet Explorer se requiere para acceder a ella a través document.frames [ "nombre"] y luego acceder al documento resultante.

Así que hay que detectar el navegador y el IE hacer algo como esto en su lugar:

document.frames['iView'].document; 

Otros consejos

El cross-browser equivalente a contentDocument (incluido el propio Firefox, donde contentDocument hace de trabajo) es contentWindow.document.

Así que trate de:

alert(document.getElementById('iView').contentWindow.document);

contentWindow se obtiene una referencia al objeto window del marco flotante, y por supuesto .document es sólo el objeto DOM de documentos para el iframe.

He aquí un artículo que resume mejor .

Parece que desee obtener el contenido del derecho iframe?

IE7 y FF2:

var iframe = document.getElementById('iView');
alert(iframe.contentWindow.document.body.innerHTML);

detección Uso característica, como contentDocument se admite en 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

sólo funcionará en Firefox.

Hacer algo como esto:

var myFrame = document.getElementById('iView');
var frameDoc = myFrame.contentDocument || myFrame.contentWindow;

if (frameDoc.document){
  frameDoc = frameDoc.document;
}

alert(frameDoc);

esta página para más detalles

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top