recherche

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

javascript - Comment le navigateur sait-il qu'un événement s'est produit?

Récemment, j'ai étudié en profondeur les problématiques liées à la captation et au bouillonnement des événements :
J'ai cette compréhension, je ne sais pas si c'est correct, vous pouvez y jeter un oeil.

Le mécanisme de propagation des événements est divisé en trois étapes : l'étape de capture, l'étape d'atteinte de la cible et l'étape de bouillonnement. Je pense que le but de ce mécanisme de propagation est de surveiller si un événement se produit, quel type d'événement il se produit et où l'événement se produit. Ce qu'on appelle la capture d'événement signifie que le navigateur recherche si un événement s'est produit. Quant au temps de traitement après l'événement, il est obtenu en enregistrant la fonction de traitement d'événement et le dernier paramètre de addEventListener().

Mais si je suis cette idée, j'aurai un tel problème.

Par exemple, j'ai un morceau de code comme celui-ci

    <p>
        <a id="btn" href="http://www.baidu.com/">
    button
        </a>
    </p>
    <script>
     var btn=document.getElementById('btn');
     var disableClickHandler =  function(event){
        console.log('1');
        event.preventDefault();
        event.stopPropagation();
     };
    document.removeEventListener('click',disableClickHandler,true);
    btn.onclick = function () {
        console.log('success');
    }
    </script>
    

J'utilise la méthode de capture pour gérer les événements et empêcher l'événement de continuer à se propager dans la fonction de gestion des événements. Cela semble naturel, mais ma question est la suivante : si l'événement a cessé de se propager, comment le navigateur sait-il où l'événement s'est produit ? Comment sait-il qu'un événement s'est produit ? S'il ne sait pas qu'un événement s'est produit, comment peut-il exécuter le gestionnaire d'événement correspondant ?

滿天的星座滿天的星座2762 Il y a quelques jours768

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

  • 给我你的怀抱

    给我你的怀抱2017-06-14 10:53:11

    Votre conflit est dû à une mauvaise compréhension de la phase de capture. Ne vous inquiétez pas du nom. La capture et le bouillonnement sont au même niveau. L’un fonctionne de l’extérieur vers l’intérieur et l’autre fonctionne de l’intérieur vers l’extérieur. Ainsi, l'interruption d'événement est interrompue pendant le processus de propagation, pas avant la propagation.

    répondre
    0
  • 大家讲道理

    大家讲道理2017-06-14 10:53:11

    Si vous parlez de comment l'obtenir. Je pense que la réponse réside dans la boucle d'événements JavaScript

    Liens : https://developer.mozilla.org...

    répondre
    0
  • 仅有的幸福

    仅有的幸福2017-06-14 10:53:11

    Le code est exécuté par le navigateur pour vous, l'événement est détecté par le navigateur, puis le navigateur vous aide à exécuter l'événement que vous avez spécifié.

    Alors vous demandez comment le navigateur le sait-il ?

    répondre
    0
  • 世界只因有你

    世界只因有你2017-06-14 10:53:11

    C'est parce que JavaScript est un langage directif. Qu'est-ce qu'un langage directif ? Autrement dit, chaque instruction JavaScript que vous écrivez est une instruction pour demander au navigateur de faire quelque chose. Par exemple, le document.getElementById() le plus simple informe en fait le navigateur d'obtenir le DOM approprié, plutôt que JavaScript lui-même. Il en va de même pour la gestion des événements.

    répondre
    0
  • 女神的闺蜜爱上我

    女神的闺蜜爱上我2017-06-14 10:53:11

    Cliquez pour exécuterdisableClickHandler, empêchant l'événement de se propager, alors...

    répondre
    0
  • 黄舟

    黄舟2017-06-14 10:53:11

    Si l'événement a cessé de se propager, comment le navigateur sait-il où l'événement s'est produit ?

    Il ne veut pas savoir.

    Comment sait-il qu'un événement s'est produit ?

    Il ne le sait pas non plus.

    S'il ne sait pas qu'un événement s'est produit, comment peut-il exécuter le gestionnaire d'événement correspondant ?

    Il a dit que c'était paresseux.

    répondre
    0
  • Annulerrépondre