Un document n'est pas directement connecté à son document parent. Vous avez besoin d'une référence à window
afin de prendre le parent
. La propriété DOM niveau 2 vues document.defaultView
vous donnera le window
dans la plupart des navigateurs Web modernes, mais dans IE, vous devez utiliser le non standard document.parentWindow
à la place. (Certains navigateurs plus anciens ou plus obscurs n'implémentent aucune de ces propriétés, auquel cas vous êtes bloqué.)
Cela vous donnera le window
du document parent. Si vous voulez obtenir le qui contient votre document, vous devrez parcourir toutes les iframes de la page et vérifier si le document que vous avez contient est vous-même.
Encore une fois, la méthode pour obtenir à partir d'un élément iframe retour à l'enfant est différent dans IE à titre gratuit (iframe.contentWindow
vous donnant la window
) vs la norme DOM et tout le monde (iframe.contentDocument
vous donnant la document
).
Donc, quelque chose comme: (. Le try...
est d'éviter de s'écraser la boucle quand un accès aux documents échoue en raison d'un autre iframe étant sur un domaine différent, ce qui provoque une erreur même politique d'origine)
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) {}
}
}
Que voulez-vous dire par « référence à un objet document »? Quel est le conteneur IFRAME? S'il vous plaît clarifier et peut-être montrer du code –
J'ai la référence à un objet de script HTMLDocument (dans l'environnement de script Firefox), et aucune référence à son conteneur IFrame. – Melllvar