web-dev-qa-db-fra.com

Accéder au DOM iFrame enfant à partir de la page parente

Voici le deal:

domain.com/page - La page parent (document.domain = domain.com) contient un sous-domaine iframe.com/page - Enfant iframe (document.domain = non défini) se trouve sur un sous-domaine.

Y at-il un moyen d'accéder au DOM de cette iframe ou est-ce que je n'ai pas de chance?

La même règle Origin m'empêche-t-elle de forcer un document.domain sur un iframe contenu dans une page parent? Je suppose que cela irait à l'encontre de l'objectif de la même stratégie d'origine ... Si tel est le cas, existe-t-il une solution de contournement pour accéder au DOM de l'iframe sur la page parent rendue?

17
timelf123

Il y a un moyen. Lorsque la page dans l'iframe se charge, demandez-lui de procéder comme suit

parent.childGetElementById = function (id) {return document.getElementById(id);}
parent.childLoaded();

Cela créera une fonction dans la portée globale de la page parente (qui contient l'iframe). Ensuite, dans le parent, juste avoir le suivant

function childLoaded() {var dom = childGetElementById('someid');}

Ceci est en cours puisque vous avez le contrôle de la page de votre chargement dans l'iframe ... sinon, vous n'avez pas de chance.

27
Zoidberg

Ceci est une mesure de sécurité du navigateur, sinon tout le monde encapsulerait vos sites Web bancaires et effacerait vos mots de passe lorsque vous vous connecteriez.

Vous pouvez parler de l'iframe au parent, mais pas à nouveau dans un iframe.

7
Gats

Vous n'avez pas de chance, autant que je sache. Vous pouvez parler entre eux en utilisant le hash-bang dans l'URL, voir this pour une discussion décente.

0
Marcus Frödin