Estoy tratando de hacer que algunas de mis bibliotecas funcionen con dispositivos táctiles, pero me cuesta trabajo averiguar cómo son compatibles y cómo funcionan.
Básicamente, hay 5 eventos táctiles , pero parece que hay consenso entre los navegadores móviles solo sobre el touchstartevento (duh). He creado un violín como caso de prueba.
Probé esto en mi Galaxy Note con Android 4 a bordo, pero también puede verificar el enlace con un navegador de escritorio.
El objetivo es tratar de descubrir cómo manejar los grifos, los dobles y largos. Nada sofisticado.
Básicamente, esto es lo que sucede:
El navegador de valores de Android no activa eventos táctiles. Simplemente trata de emular los clics del ratón con grifos, disparando mousedown, mouseupy clickeventos de forma consecutiva, pero los grifos dobles simplemente acercar y alejar tha página.
Chrome para Android dispara el evento de inicio táctil cuando el dedo toca la pantalla. Si es liberado muy pronto, se despide a continuación mousedown, mouseup, touchendy finalmente clickeventos.
En caso de golpe largo , después de aproximadamente medio segundo se dispara mousedowny mouseup, touchendcuando se levanta el dedo, sin ningún clickevento al final.
Si mueve el dedo , dispara un touchmoveevento un par de veces, luego dispara un touchcancelevento y no pasa nada después, ni siquiera un touchendevento al levantar el dedo.
Un doble toque activa las funciones de acercar / alejar, pero en cuanto a los eventos, activa el combo touchstart, toucheventdos veces, sin que se activen los eventos del mouse.
Firefox para Android dispara correctamente el touchstartevento, y en caso de incendios de tomas cortas mousedown, mouseup, touchendy clickdespués.
En caso de mucho toque , dispara mousedown, mouseupy finalmente touchendeventos. Es lo mismo que Chrome para estas cosas.
Pero si mueve el dedo , se dispara touchmovecontinuamente (como es de esperar) pero no dispara el touchleaveevento cuando el dedo deja el elemento con el detector de eventos, y no dispara el touchcancelevento cuando el dedo sale de la ventana del navegador. .
Para toques dobles , se comporta como Chrome.
Opera Mobile hace lo mismo que Chrome y Firefox con un toque corto, pero en caso de una pulsación larga, activa algún tipo de función para compartir que realmente quiero desactivar. Si mueve el dedo o toca dos veces, se comporta como Firefox.
Chrome beta hace lo habitual para toques cortos, pero en caso de toques largos, ya no activa el mouseupevento, solo touchstart, luego de mousedownmedio segundo, luego touchendcuando se levanta el dedo. Cuando se mueve el dedo, ahora se comporta como Firefox y Opera Mobile.
En caso de grifos dobles , que no se dispara eventos de toque cuando el zoom se aleja , pero sólo cuando se hace zoom en.
Chrome beta muestra el comportamiento más extraño, pero realmente no puedo quejarme ya que es una versión beta.
La pregunta es : ¿existe una forma simple y sencilla de intentar detectar toques cortos, toques largos y toques dobles en los navegadores más comunes de dispositivos táctiles?
Lástima que no pueda probarlo en dispositivos iOS con Safari, o IE para Windows Phone 7 / Phone 8 / RT, pero si algunos de ustedes pueden, sus comentarios serán muy apreciados.
