with w3schools uncaught origin from cross create contentdocument content accessing javascript html iframe document

w3schools - Obtenga el documento de IFrame, desde JavaScript en el documento principal



js iframe contentdocument (2)

Tengo este código HTML:

<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 recibo 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 dijeras dónde cometí mi error. (Quiero que el documento se aloje en IFrame).

Gracias.


Debería poder acceder al documento en el IFRAME usando el siguiente código:

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

Sin embargo, no podrá hacer esto si la página en el marco se carga desde un dominio diferente (como google.com). Esto se debe a la Política de Same Origin del navegador.


El problema es que en IE (que es lo que supongo que está probando), el elemento <iframe> tiene una propiedad de document que hace referencia al documento que contiene el iframe, y esto se está utilizando antes de las propiedades contentDocument o contentWindow.document . Lo que necesitas es:

function GetDoc(x) { return x.contentDocument || x.contentWindow.document; }

Además, document.all no está disponible en todos los navegadores y no es estándar. Use document.getElementById() lugar.