web-dev-qa-db-fra.com

Variation des e.touches, e.targetTouches et e.changedTouches

Disons que j'écoute touchstart, touchmove et touchend sur l'élément body.

Faites-moi savoir si je me trompe, mais je pense que e.touches est le même que e.targetTouches? Si c'est le cas, comment e.changedTouches varie avec eux?

Je veux dire, étant donné une touche à un moment donné, je vais chercher le touchevent et l'analyser. D'après mon expérience, les trois variables tactiles sont les mêmes.

Je dois envoyer les données analysées au serveur et il est assez redondant d'envoyer trois fois la même chaîne exacte, n'y a-t-il aucun moyen de les envoyer une fois et de reproduire par programmation le touchevent sur le serveur?

55
Andrei Zisu

Nous avons les listes suivantes:

  • touches: une liste d'informations pour chaque doigt touchant actuellement l'écran
  • targetTouches: comme les touches, mais est filtré uniquement pour les informations sur les touches qui ont commencé au sein du même nœud
  • changedTouches: Une liste d'informations pour chaque doigt impliqué dans l'événement

Pour mieux comprendre ce qui pourrait figurer dans ces listes, examinons rapidement quelques exemples. Ils varient selon les règles suivantes:

  • Lorsque je pose un doigt, les trois listes auront les mêmes informations. Ce sera dans changedTouches parce que mettre le doigt vers le bas est la cause de l'événement
  • Lorsque je pose un deuxième doigt, touches aura deux éléments, un pour chaque doigt. targetTouches n'aura deux éléments que si le doigt a été placé dans le même nœud que le premier doigt. changedTouches aura les informations relatives au deuxième doigt, car c'est ce qui a causé l'événement
  • Si je pose deux doigts exactement en même temps, il est possible d'avoir deux éléments dans changedTouches, un pour chaque doigt
  • Si je déplace mes doigts, la seule liste qui changera est changedTouches et contiendra des informations relatives au nombre de doigts qui ont bougé (au moins un).
  • Lorsque je lève un doigt, il sera supprimé de touches, targetTouches et apparaîtra dans changedTouches puisque c'est ce qui a causé l'événement
  • La suppression de mon dernier doigt laissera touches et targetTouches vides, et changedTouches contiendra des informations sur le dernier doigt
184
Andrei Zisu