Un documento non è direttamente collegato al documento principale. Hai bisogno di un riferimento a window
per raccogliere il parent
.
Il DOM Level 2 Visualizzazioni proprietà document.defaultView
vi darà la window
nella maggior parte dei browser moderni, ma in IE è necessario utilizzare il non-standard document.parentWindow
invece. (Alcuni browser più vecchi o più oscuri non implementano nessuna di queste proprietà, nel qual caso sei bloccato.)
Questo ti darà lo window
del documento principale. Se vuoi ottenere lo che trattiene il tuo documento, dovrai scorrere tutti gli iframe sulla pagina e controllare se il documento contenuto è te stesso.
Anche in questo caso, il metodo per ottenere da un elemento iframe indietro al bambino è diverso gratuitamente in IE (iframe.contentWindow
dandovi la window
) contro lo standard DOM e tutti gli altri (iframe.contentDocument
dandovi la document
).
Quindi, qualcosa di simile a: (. La try...
è per evitare di sbattere il ciclo quando un accesso documento non riesce a causa di un altro iframe essere su un dominio diverso, causando un errore stesso Origin Policy)
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) {}
}
}
Cosa si intende per "riferimento ad un oggetto documento"? Qual è il contenitore IFRAME? Si prega di chiarire e magari mostrare qualche codice –
Ho il riferimento a un oggetto di script HTMLDocument (nell'ambiente di scripting di Firefox) e nessun riferimento al suo contenitore IFrame. – Melllvar