Solución:
Prueba lo siguiente
var doc=document.getElementById("frame").contentDocument;
// Earlier versions of IE or IE8+ where !DOCTYPE is not specified
var doc=document.getElementById("frame").contentWindow.document;
Nota: AndyE señaló que contentWindow
es compatible con todos los navegadores principales, por lo que puede ser la mejor manera de hacerlo.
- http://help.dottoro.com/ljctglqj.php
Nota 2: En esta muestra, no podrá acceder al documento por ningún medio. El motivo es que no puede acceder al documento de un iframe con un origen diferente porque infringe la política de seguridad “Mismo origen”.
- http://javascript.info/tutorial/same-origin-security-policy
Este es el código que utilizo:
var ifrm = document.getElementById('myFrame');
ifrm = (ifrm.contentWindow) ? ifrm.contentWindow : (ifrm.contentDocument.document) ? ifrm.contentDocument.document : ifrm.contentDocument;
ifrm.document.open();
ifrm.document.write('Hello World!');
ifrm.document.close();
contentWindow frente a contentDocument
- IE (Win) y Mozilla (1.7) devolverán el objeto de ventana dentro del iframe con oIFrame.contentWindow.
- Safari (1.2.4) no comprende esa propiedad, pero tiene oIframe.contentDocument, que apunta al objeto del documento dentro del iframe.
- Para hacerlo aún más complicado, Opera 7 usa oIframe.contentDocument, pero apunta al objeto de ventana del iframe. Debido a que Safari no tiene forma de acceder directamente al objeto de ventana de un elemento iframe a través del DOM estándar (¿o no?), Nuestro código totalmente moderno compatible con navegadores cruzados solo podrá acceder al documento dentro del iframe.
Para aún más robustez:
function getIframeWindow(iframe_object) {
var doc;
if (iframe_object.contentWindow) {
return iframe_object.contentWindow;
}
if (iframe_object.window) {
return iframe_object.window;
}
if (!doc && iframe_object.contentDocument) {
doc = iframe_object.contentDocument;
}
if (!doc && iframe_object.document) {
doc = iframe_object.document;
}
if (doc && doc.defaultView) {
return doc.defaultView;
}
if (doc && doc.parentWindow) {
return doc.parentWindow;
}
return undefined;
}
y
...
var el = document.getElementById('targetFrame');
var frame_win = getIframeWindow(el);
if (frame_win) {
frame_win.targetFunction();
...
}
...
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)