Je travaille sur un site Web mobile qui doit fonctionner sur une variété d'appareils. Celui qui me fait mal à la tête en ce moment est BlackBerry.
Nous devons prendre en charge les clics sur le clavier ainsi que les événements tactiles.
Idéalement, j'utiliserais simplement:
$thing.click(function(){...})
mais le problème que nous rencontrons est que certains de ces appareils BlackBerry ont un délai très gênant entre le moment où le toucher et le déclenchement d'un clic.
Le remède consiste à utiliser plutôt le démarrage tactile:
$thing.bind('touchstart', function(event){...})
Mais comment puis-je lier les deux événements, mais n'en déclencher qu'un? J'ai toujours besoin de l'événement click pour les périphériques clavier, mais bien sûr, je ne veux pas que l'événement click se déclenche si j'utilise un périphérique tactile.
Une question bonus: existe-t-il de toute façon de le faire et d'accueillir en outre des navigateurs qui n'ont même pas d'événement tactile? En recherchant cela, il semble que BlackBerry OS5 ne prend pas en charge le démarrage tactile, il devra donc également s'appuyer sur les événements de clic pour ce navigateur.
ADDENDA:
Peut-être une question plus globale est:
Avec jQuery, est-il possible / recommandé de gérer à la fois les interactions tactiles et les interactions avec la souris avec les mêmes liaisons?
Idéalement, la réponse est oui. Sinon, j'ai quelques options:
1) Nous utilisons WURFL pour obtenir des informations sur les appareils afin de créer notre propre matrice d'appareils. Selon l'appareil, nous utiliserons le démarrage tactile OU cliquez sur.
2) Détecter la prise en charge tactile dans le navigateur via JS (j'ai besoin de faire plus de recherches à ce sujet, mais il semble que cela soit faisable).
Cependant, cela laisse toujours un problème: qu'en est-il des appareils qui prennent en charge les deux. Certains des téléphones que nous prenons en charge (à savoir les Nokias et les Blackberry) ont à la fois des écrans tactiles et des claviers. Donc, ce genre de chose me ramène à la question d'origine ... existe-t-il un moyen de permettre les deux à la fois d'une manière ou d'une autre?
.bind('touchstart mouseup')
le résoudra (basé sur l'un des commentaires ci-dessous)