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
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 lelistener
enregistré avant d'être distribués vers lesEventTarget
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.
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.