Comment appeler la fenêtre parentale Fonction JavaScript dans l'iframe

Voici mon code sur http://my-localhost.com/iframe-test.html

 <html> <head><title>Welcome Iframe Test</title></head> <body> <iframe src="http://www.my-website.com/index.html" width="500" height="500"></iframe> <script type="text/javascript"> function alertMyMessage(msg){ alert(msg); } </script> </body> </html> 

Voici le code sur http://www.my-website.com/index.html

 <html> <head></title>Welcome to my Server</title></head> <body> <h1>Welcome to My Server</ht> <a href="javascript:void(0)" title="Click here" onClick="parent.alertMyMessage('Thanks for Helping me')">Click Here</a> </body> </html> 

Quand je clique sur le lien "Cliquez ici". J'ai suivi l'erreur.

Uncaught SecurityError: bloqué un cadre avec l'origine " http://www.my-website.com " d'accéder à un cadre avec l'origine " http://my-localhost.com ". Les protocoles, les domaines et les ports doivent correspondre.

Aidez-moi à résoudre ce problème ou à apporter une autre solution pour cela.

Vous ne pouvez pas accéder au DOM d'une page chargée dans un cadre d'une origine différente. Ceci est bloqué pour des raisons de sécurité (imaginez un site Web aléatoire que vous avez visité pour ouvrir votre service de messagerie Web dans un iframe caché et vous pouvez voir pourquoi).

Le plus proche que vous puissiez venir, et seulement si vous contrôlez les deux sites, c'est passer des messages entre eux en utilisant l' api de messagerie Web .

Dans une page, écrivez une fonction pour gérer les messages, puis ajoutez-le en tant qu'écran d'événement de message.

 function receiveMessage(event) { alert(event.data); } addEventListener("message", receiveMessage, false); 

Dans l'autre, envoyez le message:

 parent.postMessage("This is a message", "*"); 

Voir MDN pour plus d'informations

Vous pouvez utiliser PostMessage!

PARENT

 if (window.addEventListener) { window.addEventListener ("message", receive, false); } else { if (window.attachEvent) { window.attachEvent("onmessage",receive, false); } } function receive(event){ var data = event.data; if(typeof(window[data.func]) == "function"){ window[data.func].call(null, data.params[0]); } } function alertMyMessage(msg){ alert(msg); } 

IFRAME

 function send(){ window.parent.window.postMessage( {'func':'alertMyMessage','params':['Thanks for Helping me']}, 'http://www.my-website.com' ); } 

RÉFÉRENCE

https://developer.mozilla.org/en-US/docs/Web/API/Window.postMessage