Le déclenchement d'un événement jQuery à partir d'une iframe
Voici le scénario, j'ai des évènements qui se produisent dans une iframe et jusqu'à maintenant tout va bien. Je viens de tomber sur le problème lorsque je veux envoyer une manifestation de l'iframe à la société mère.
Je suis en utilisant ce pour déclencher l'événement de l'iframe:
$('body', window.parent.document).trigger('eventName');
//and I've also tried
$(window.parent.document).find('body').trigger('eventName');
Et puis, dans la page parent j'ai écoute l'événement comme ceci:
$('body').bind('eventName', myFunction)
Je sais que le script arrive à la détente, car j'ai collé une console.log
avant et après le déclenchement. L'iframe est sur le même domaine, donc il n'y a pas de problème.
Je peux appeler une fonction sur la page parent directement comme ceci: window.parent.functionName
mais je me demandais si cela est possible en utilisant l'aide d'un événement en fonction de la solution.
Résolu
@cwolves réponse est génial de travailler:
parent.$('body').trigger( 'eventName' );
- Qu'est-ce que l'événement que vous essayez de déclencher?
- un événement personnalisé nommé dans ce cas
eventName
- Double Possible de déclencher l'événement click dans l'iframe de la fenêtre parent
Vous devez vous connecter pour publier un commentaire.
Si vous avez jQuery est chargé dans le cadre parent, essayez:
Si pas, essayez ceci, je ne suis pas sûr si cela va fonctionner, mais j'ai juste regardé le jQuery source et pense qu'il peut:
(Et faire la même chose lors de la liaison
eventName
)Le problème, pour autant que je peux dire, c'est que jQuery est en utilisant les données de la page locale, qui est à l'origine des problèmes, car on dirait qu'il essaie de charger des données à partir de l'autre cadre. En d'autres termes, c'est un gâchis, mais il y a
data
params accepté dans.bind
,.trigger
, etc.parent.$('body').trigger('eventName')
fonctionne très bien. Merci beaucoup!Essayez ceci dans l'iframe code js
Ce sera donc le code qui vit dans votre iFrame:
Et ce code doit être dans la fenêtre parente:
Vous devez également être en cours d'exécution ceci sur un serveur, soit localhost ou hébergé.
I can call a function on the parent page directly like this: window.parent.functionName but I was wondering if this is possible with using using an event based solution.