web-dev-qa-db-fra.com

Comment faire fonctionner jQueryUI drag \ drop avec des appareils tactiles

C'est une situation où j'espère que quelqu'un répondra pour me dire que je suis un idiot. Mais je continue d'être étonné que jQueryUI drag\drop ne fonctionne pas avec les appareils tactiles. Je ne les ai pas tous testés mais j'ai essayé iphone\ipad\Android 2, 3 & 4 au cours de la dernière année et rien. Je viens d'essayer la dernière version sur un nouvel Android. Toujours rien. Ne me croyez pas, visitez simplement la page de démonstration sur un appareil mobile et essayez d'utiliser les exemples glisser-déposer. Rien.

Y a-t-il un problème technique ou une incompatibilité de base en jeu ici? Une solution si facile que ça ne vaut pas la peine d'être écrit? Les développeurs jQuery n'utilisent-ils pas les appareils mobiles? J'ai vu des "correctifs" publiés ici et là autour de Stack Overflow mais ce sont tous des "hacks" et tous ceux que j'ai essayés ne fonctionnent pas.

Je suis perplexe. Quelqu'un peut-il faire la lumière sur cette question?

35
Brian

Si vous voulez simplement que votre code d'interface utilisateur jQuery actuel fonctionne avec les événements tactiles, vous pouvez utiliser le patch singe jQuery UI Touch Punch .

Le seul "problème technique ou incompatibilité de base" est que jQuery UI (1.x) écoute uniquement les événements de souris, pas les événements tactiles (Voir la réponse de @ ScottGonzales pour la raison historique). jQuery touch punch, ci-dessus, fait ce changement. Vous pouvez même essayer certains des exemples d'interface utilisateur jQuery sur cette page, et ils fonctionnent. En règle générale, l'utilisation de Touch Punch est la solution actuellement acceptée.

69
forivall

Il y a une longue histoire derrière pourquoi jQuery UI ne prend pas en charge les appareils tactiles, mais cela se résume au fait que Touch Event était une implémentation spécifique à WebKit non standard. À l'époque, l'avenir semblait morne. Apple détenait des brevets que personne ne voulait approcher; en conséquence, Mozilla a implémenté son propre système d'événements tactiles avec des flux qui n'ont jamais été pris en compte. On ne savait pas exactement ce que Microsoft et Opera ferait l'affaire. Paul Bakaus (le créateur de jQuery UI) voulait débarquer le support iPhone il y a 4 ans . Je voulais attendre une norme officielle.

Le temps a passé, Mozilla a abandonné ses événements tactiles et Microsoft a implémenté son propre système d'événements de pointeur. Le W3C a formé un groupe de travail pour normaliser les événements tactiles et enquêter sur les Apple. Le groupe de travail sur les événements tactiles a publié une recommandation et dissous. Microsoft a finalement soumis une proposition de normalisation des événements de pointeur et il y a maintenant un groupe de travail sur les événements du pointeur du W3C.

Nous travaillons actuellement sur une réécriture indépendante de l'appareil de toutes les interactions jQuery UI qui feront partie de jQuery UI 2.0. Jusque-là, vous pouvez utiliser jQuery UI Touch Punch .

Plus tôt cette année, j'ai écrit sur l'histoire de Touch Events et pourquoi les événements Pointer offrent un meilleur avenir. Vous pouvez en lire plus sur le blog jQuery .

31
Scott González

Découvrez jQTouch

C'est un plugin jQuery qui aide à combler les écarts entre les appareils de bureau et les appareils tactiles.

0
Jason Whitted