J'ai commencé à utiliser les événements tactiles pendant un moment, mais je suis tombé sur un problème. Jusqu'à présent, j'ai vérifié si les capacités tactiles sont supportées, et appliqué des événements sélectifs basés sur cela. Comme ceci:Détection des capacités du navigateur et des événements sélectifs pour la souris et le toucher
if(document.ontouchmove === undefined){
//apply mouse events
}else{
//apply touch events
}
Cependant, mes scripts ont cessé de fonctionner dans Chrome5 (qui est actuellement beta) sur mon ordinateur. J'ai fait des recherches un peu, et comme je m'y attendais, dans Chrome5 (par opposition aux anciens Chrome, Firefox, IE, etc.) document.ontouchmove
n'est plus undefined
mais null
. Au début, je voulais soumettre un rapport de bug, mais j'ai réalisé: Il y a des périphériques qui ont des capacités souris et tactiles, donc ça peut être naturel, peut-être que Chrome le définit parce que mon OS supporte les deux types d'évènements . Par conséquent, les solutions semblent simples: appliquer les deux types d'événement. Droite?
Eh bien, le problème a maintenant lieu sur mobile. Afin d'être rétrocompatible et de prendre en charge les scripts n'utilisant que des événements de souris, les navigateurs mobiles peuvent également essayer de les déclencher (au toucher). Ainsi, avec les deux événements mouse et touch, un certain gestionnaire peut être appelé deux fois à chaque fois.
Quelle est la manière d'aborder cela? Existe-t-il un meilleur moyen de vérifier et d'appliquer des événements sélectifs, ou dois-je ignorer les problèmes qui peuvent se produire si les navigateurs déclenchent à la fois des événements tactiles et de souris?
Je suis incapable de tester, mais vais retourner faux sur un événement tactile annuler son comportement par défaut (tirant l'événement de souris rétrocompatible?) – gnarf