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 touchstart
evento (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
, mouseup
y click
eventos 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
, touchend
y finalmente click
eventos.
En caso de golpe largo , después de aproximadamente medio segundo se dispara mousedown
y mouseup
, touchend
cuando se levanta el dedo, sin ningún click
evento al final.
Si mueve el dedo , dispara un touchmove
evento un par de veces, luego dispara un touchcancel
evento y no pasa nada después, ni siquiera un touchend
evento al levantar el dedo.
Un doble toque activa las funciones de acercar / alejar, pero en cuanto a los eventos, activa el combo touchstart
, touchevent
dos veces, sin que se activen los eventos del mouse.
Firefox para Android dispara correctamente el touchstart
evento, y en caso de incendios de tomas cortas mousedown
, mouseup
, touchend
y click
después.
En caso de mucho toque , dispara mousedown
, mouseup
y finalmente touchend
eventos. Es lo mismo que Chrome para estas cosas.
Pero si mueve el dedo , se dispara touchmove
continuamente (como es de esperar) pero no dispara el touchleave
evento cuando el dedo deja el elemento con el detector de eventos, y no dispara el touchcancel
evento 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 mouseup
evento, solo touchstart
, luego de mousedown
medio segundo, luego touchend
cuando 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.