J'ai un script greasemonkey qui ouvre un iframe contenant un formulaire d'un sous-domaine différent en tant que page parent.
Je voudrais rafraîchir la page parent lorsque l'iframe rafraichit après la soumission du formulaire
Je suis au point où je peux exécuter une fonction lorsque le rafraîchit iFrame, mais je ne peux pas obtenir cette fonction pour affecter le parent document. Je comprends que cela est dû aux modèles de sécurité du navigateur, et j'ai lu sur l'utilisation de postMessage pour communiquer entre les deux fenêtres, mais je n'arrive pas à comprendre comment envoyer un appel de rechargement au parent avec elle.
Des conseils sur la façon de le faire serait très utile
grâceen utilisant postmessage pour actualiser le document parent d'iframe
18
A
Répondre
47
Utilisation:
window.parent.postMessage('Hello Parent Frame!', '*');
Notez le '*' indique "toute origine". Vous devriez remplacer ceci par l'origine cible si possible.
Dans le cadre de votre parent vous avez besoin:
window.addEventListener('message', receiveMessage, false);
function receiveMessage(evt)
{
if (evt.origin === 'http://my.iframe.org')
{
alert("got message: "+evt.data);
}
}
Remplacer "my.iframe.org" à l'origine de votre iFrame. (Vous pouvez ignorer la vérification de l'origine, faites très attention à ce que vous faites avec les données que vous obtenez).
Notez que IE ne supporte pas 'addEventListener' alors utilisez jQuery bind ou quelque chose –
Si vous avez plusieurs iframes l'un dans l'autre, vous pouvez remplacer _parent_ par _top_ pour atteindre la page la plus haute: 'window.top.postMessage (' Bonjour Cadre Parent! ',' * '); ' –