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.