Un documento no está directamente conectado a su documento principal. Sí necesita una referencia al window
para recoger el parent
.
La propiedad de Views DOM Level 2 document.defaultView
le dará el window
en la mayoría de los navegadores web modernos, pero en IE tiene que usar el no estándar document.parentWindow
en su lugar. (Algunos navegadores antiguos o más oscuros no implementan ninguna de estas propiedades, en cuyo caso le pegan.)
que usted va a dar al window
del documento de nivel superior. Si desea obtener el que contiene su documento, tendrá que recorrer todos los iframes en la página y verificar si el documento contenido es suyo.
Una vez más, el método para llegar de un elemento iframe con el niño sepa es diferente en IE (iframe.contentWindow
que le da la window
) vs el estándar DOM y todos los demás (iframe.contentDocument
que le da la document
).
Por lo tanto, algo así como: (. El try...
es evitar estrellarse el bucle cuando un acceso a los documentos falla debido a otro iframe estar en un dominio diferente, causando un error de política del mismo origen)
function getFrameForDocument(document) {
var w= document.defaultView || document.parentWindow;
var frames= w.parent.document.getElementsByTagName('iframe');
for (var i= frames.length; i-->0;) {
var frame= frames[i];
try {
var d= frame.contentDocument || frame.contentWindow.document;
if (d===document)
return frame;
} catch(e) {}
}
}
¿Qué quiere decir por "referencia a un objeto de documento"? ¿Cuál es el contenedor IFRAME? Por favor, aclare y quizás muestre algún código –
Tengo la referencia a un objeto de scripting HTMLDocument (en el entorno de scripting Firefox), y no hay referencia a su contenedor IFrame. – Melllvar