2010-10-22 13 views
42

tengo este código HTML:Obtener el documento de marco flotante, desde JavaScript en el documento principal

<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> 

El problema es que me sale el mensaje "malo". Eso significa que el documento de iframe no se obtuvo correctamente, y lo que realmente devuelve la función GetDoc es el documento principal.

Estaría agradecido si me dijera dónde cometí mi error. (Deseo obtener el documento alojado en IFrame.)

Gracias.

+0

Esto se solicitó en 2010, hoy en 2015, esto no funcionaría en ningún navegador más nuevo, a menos que esté desarrollando a google.com. Debido a la política de origen cruzada, no puede acceder al contenido del iframe, si apunta a una página en un dominio diferente al que se carga el documento original. – aorcsik

Respuesta

93

Usted debe ser capaz de acceder al documento en el IFRAME usando el siguiente código:

document.getElementById('myframe').contentWindow.document 

Sin embargo, usted no será capaz de hacerlo si la página en el marco se carga desde un dominio diferente (como google.com). Esto se debe al Same Origin Policy del navegador.

+2

¿Huh? Eso devolverá 'undefined' (la mayoría de los navegadores) o el documento en el que está el elemento'