Maison  >  Questions et réponses  >  le corps du texte

javascript - Problème avec la page parent qui écoute les événements dans l'iframe

Je n’arrive toujours pas à écouter, quelle en est la raison ?

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

世界只因有你世界只因有你2713 Il y a quelques jours892

répondre à tous(4)je répondrai

  • 滿天的星座

    滿天的星座2017-05-16 13:37:56

    son.html

     $(function(){
            $('#button').on('click', function(){
                window.parent.$(window).trigger('dosomething');
            });
        });

    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.

    répondre
    0
  • 漂亮男人

    漂亮男人2017-05-16 13:37:56

    PostMessage peut être utilisé pour communiquer entre les pages.

    Ou simplement lier et gérer les événements sur la même page.

    $('#iframe').contents().find('#button').on("click", function(){
        $(window).trigger('dosomething');
    });

    répondre
    0
  • 天蓬老师

    天蓬老师2017-05-16 13:37:56

    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.

    répondre
    0
  • 为情所困

    为情所困2017-05-16 13:37:56

    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 ?

    répondre
    0
  • Annulerrépondre