parent.html
<body>
<iframe id="iframe" src="son.html" frameborder="0"></iframe>
<script src="./jquery.js"></script>
<script>
$(function(){
$($('#iframe')[0].contentWindow).on('dosomething', function(){
alert('接收到到iframe的事件');
});
});
</script>
</body>
son.html
<body>
<h1>son</h1>
<button id="button">trigger</button>
<script src="./jquery.js"></script>
<script>
$(function(){
$('#button').on('click', function(){
$(window).trigger('dosomething');
});
});
</script>
</body>
Merci !
Ne pas
Je viens de le trouver en cherchant, c'est pas mal, la compatibilité est bonne
MessengerJS
https://github.com/biqing/Mes...
Solution de communication cross-document
son.html
L'événement est défini dans le jquery de la page parent pour se déclencher, le jquery de la page parent doit être responsable du déclenchement.
Je n'ai pas regardé le code source de jquery depuis longtemps. J'ai cherché pendant longtemps et je n'ai pas trouvé le contenu correspondant à expliquer.
PostMessage peut être utilisé pour communiquer entre les pages.
Ou simplement lier et gérer les événements sur la même page.
La raison pour laquelle il ne peut pas être surveillé est que lorsque la page parent effectue une liaison d'événement via la méthode on, la fonction de rappel d'événement est enregistrée dans l'objet jquery de la page parent. Lorsque la page enfant exécute la méthode de déclenchement, elle recherchera uniquement le rappel d'événement enregistré dans l'objet jquery de la page enfant. Par conséquent, une fois l'événement déclenché, la fonction de rappel d'événement enregistrée sur la page parent ne peut pas être exécutée car elle ne le peut pas. être trouvé dans l'objet jquery de la page enfant.
Deux jqs, deux environnements, tu es sûr qu'il n'y a pas de problème ?
------Ce qui précède est la réponse originale, et ce qui suit est ma plainte après avoir été signalée -------
Je voudrais demander à la personne qui m'a signalé, deux environnements jq, est-ce la raison pour laquelle vous ne pouvez pas déclencher l'événement ?
Qu'est-ce qui ne va pas dans ma réponse ? Quelle est la raison de votre signalement ?