132 votes

Qu'indique le troisième paramètre (false) dans document.addEventListener("deviceready",OnDeviceReady,false) ;

Qu'est-ce que le troisième paramètre (false) indique en

document.addEventListener("deviceready",OnDeviceReady,false);

Est-ce que quelqu'un peut montrer un exemple de script pour montrer la différence.

475voto

lonesomeday Points 95456

Ceci pour des raisons historiques. Lorsque le système d'événements du navigateur a été conçu pour la première fois, il existait deux façons contradictoires de modéliser son fonctionnement. On les appelait la capture d'événements et le bouillonnement d'événements.

Prenez par exemple, ce HTML :

<html>
    <body>
        <a href="#">Content</a>
    </body>
</html>

Si un événement (par exemple un clic) se produit sur l'icône a les éléments ancêtres doivent-ils le savoir ? Il était largement admis qu'ils le devaient. Mais la question était dans quel ordre ils doivent être informés. Les développeurs de Microsoft et de Netscape (ceci devrait vous donner une idée de l'ampleur de l'activité des développeurs). comment historiques, on parle !) avaient des avis divergents.

L'un des modèles était la capture d'événements (préconisée par les développeurs de Netscape). Cela notifiait le html d'abord, et s'est frayé un chemin vers le bas de l'arbre :

  • html
  • body
  • a

L'autre modèle était l'event bubbling (préconisé par les développeurs de Microsoft). Il notifie d'abord l'élément cible, puis remonte le long de l'arbre :

  • a
  • body
  • html

Le compromis final était qu'il devait faire les deux .

  • html (phase de capture)
  • body (phase de capture)
  • a (phase de capture)
  • a (phase de bouillonnement)
  • body (phase d'ébullition)
  • html (phase de bouillonnement)

Ainsi, l'événement descend le long de l'arbre, puis remonte.

C'est une façon un peu longue d'arriver à addEventListener . addEventListener écoute les événements de la phase de capture et de la phase de bouillonnement. Le troisième paramètre (appelé useCapture dans la spécification) permet au programmeur de spécifier la phase qu'il souhaite utiliser.

Dans les navigateurs modernes, la valeur par défaut est la suivante false . Vous ne rencontrerez probablement jamais une circonstance où vous voudrez utiliser la phase de capture, d'autant plus qu'Internet Explorer ne la prend toujours pas en charge. Mais les anciens navigateurs ont besoin de la false pour être explicite, donc il est généralement fourni pour la compatibilité ascendante.

21voto

lifus Points 7628

C'est utiliserCapture :

Si true , useCapture indique que l'utilisateur souhaite lancer la capture. Après avoir initié capture, tous les événements du type spécifié spécifiés seront envoyés à l'unité enregistré listener avant d'être avant d'être envoyé EventTarget s en dessous dans l'arbre DOM. Les événements qui sont remontent dans l'arbre ne déclencheront pas ne déclencheront pas un écouteur désigné pour utiliser la capture. Voir Événements du niveau 3 de DOM pour une explication détaillée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X