web-dev-qa-db-fra.com

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

Qu'est-ce que le troisième paramètre (faux) indique dans

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

Quelqu'un peut-il montrer un exemple de script pour montrer la différence

78
iJade

C'est seCapture :

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

10
lifus

C'est pour des raisons historiques. Lorsque le système d'événements du navigateur a été conçu pour la première fois, il y avait deux façons conflictuelles 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'élément a, les éléments ancêtres devraient-ils le savoir? Il a été largement accepté qu'ils le devraient. Mais la question était dans quel ordre ils devaient être notifiés. Les développeurs de Microsoft et de Netscape (cela devrait vous donner une idée de tout à fait comment historique dont nous parlons!) Avaient des opinions différentes.

Un modèle était la capture d'événements (préconisée par les développeurs de Netscape). Cela a notifié l'élément html en premier et a progressé dans l'arborescence:

  • html
  • body
  • a

L'autre modèle était le bouillonnement d'événements (préconisé par les développeurs Microsoft). Cela a notifié l'élément cible en premier et a remonté l'arborescence:

  • a
  • body
  • html

Le compromis éventuel était qu'il devrait faire les deux .

  • html (phase de capture)
  • body (phase de capture)
  • a (phase de capture)
  • a (phase bouillonnante)
  • body (phase de bullage)
  • html (phase bouillonnante)

L'événement se déroule donc dans l'arborescence, puis revient en arrière.

Il s'agit d'un moyen de longue haleine d'accéder à addEventListener. addEventListener écoute les événements de phase de capture et de phase de propagation. 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, cette valeur par défaut est false. Vous ne rencontrerez probablement jamais une circonstance où vous souhaitez utiliser la phase de capture, d'autant plus qu'Internet Explorer ne la prend toujours pas en charge. Mais les anciens navigateurs ont besoin que le false soit explicite, il est donc généralement fourni pour une compatibilité descendante.

301
lonesomeday