306 votes

Iframe fonction appel de Iframe à la fonction de parent page javascript

Je tiens à appeler une fonction js d’iframe à une fenêtre parente

472voto

rahul Points 84185
 <a onclick="parent.abc();" href="#" >Call Me </a>
 

Voir window.parent

Renvoie une référence au parent de la fenêtre ou de la sous-trame actuelle.

Si une fenêtre n'a pas de parent, sa propriété parent est une référence à elle-même.

Lorsqu'une fenêtre est chargée dans un <iframe> , <object> ou <frame> , son parent est la fenêtre avec l'élément incorporant la fenêtre.

84voto

Ash Clarke Points 1625

J'ai récemment dû découvrir pourquoi cela ne fonctionnait pas aussi.

Le javascript que vous voulez appeler depuis l'iframe enfant doit être dans la tête du parent. Si c'est dans le corps, le script n'est pas disponible dans la portée globale.

 <head>
    <script>
    function abc() {
        alert("sss");
    }
    </script>
</head>
<body>
    <iframe id="myFrame">
        <a onclick="parent.abc();" href="#">Click Me</a>
    </iframe>
</body>
 

J'espère que cela aidera quelqu'un qui trébuche sur cette question à nouveau.

20voto

Ash Clarke Points 1625

J'ai posté ceci comme une réponse distincte, comme elle est sans rapport avec ma réponse existant.

Cette question a récemment surgi de nouveau pour accéder à un parent d'un iframe référencement d'un sous-domaine et les correctifs n'ont pas de travail.

Cette fois, la réponse a été de modifier le document.de domaine de la page parent et l'iframe être le même. Ce sera fou de la même origine vérification de la politique en pensant qu'ils co-exister sur le même domaine (sous-domaines sont considérés comme un hôte différent et ne parviennent pas la même origine à vérifier).

Insérer le texte suivant à l' <head> de la page dans l'iframe pour correspondre au domaine parent (ajuster en fonction de votre doctype).

<script>
    document.domain = "mydomain.com";
</script>

Veuillez noter que cela provoquera une erreur sur localhost développement, donc à utiliser un chèque comme suit pour éviter l'erreur:

if (!window.location.href.match(/localhost/gi)) {
    document.domain = "mydomain.com";
} 

18voto

Vous pouvez utiliser

 window.top
 

voir ce qui suit.

 <head>
    <script>
    function abc() {
        alert("sss");
    }
    </script>
</head>
<body>
    <iframe id="myFrame">
        <a onclick="window.top.abc();" href="#">Click Me</a>
    </iframe>
</body>
 

3voto

Devon Points 1551

Une autre addition pour ceux qui en ont besoin. La solution d'Ash Clarke ne fonctionne pas si elle utilise des protocoles différents, alors assurez-vous que si vous utilisez SSL, votre iframe utilise également le protocole SSL, sinon la fonction sera interrompue. Sa solution a fonctionné pour les domaines mêmes, alors merci pour cela.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X