Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


¿Por qué es el evento touchstart después de hacer clic?

Aquí hay algo raro, que estaba seguro de que funcionaba en los navegadores anteriores de celulares: En Chrome en Android y Safari en iOS, parece que el evento touchstart se dispara después del evento de clic, no antes. ¿Cuándo cambió esto?

Un ejemplo sencillo:

jQuery(function($) { var touched = false; $('#clicky').on('touchstart', function(evt){ touched = true; evt.preventDefault(); }) .click(function(){ if (!touched) { alert("somehow touch didn't fire") } }); }) 

Ejecutar este violín, y verá la alerta puede aparecer en Android e iOS, cuando en realidad nunca se muestran!

Http://jsfiddle.net/quxnxu7d/2/

3 Solutions collect form web for “¿Por qué es el evento touchstart después de hacer clic?”

Corrí a través de Chrome en Android y funcionó como usted esperaba para mí. He añadido una alerta al controlador touchstart y disparó para estar seguro de que estaba disparando primero y lo hizo.

Echa un vistazo al artículo td touch mdn . El artículo menciona específicamente:

Llamando a preventDefault () en un touchstart o el primer evento touchmove de una serie impide que los eventos correspondientes del ratón touchmove

Click es un evento de ratón por lo que "debe" funcionar como usted espera (y que estaba trabajando para mí). Comprobaría que los eventos se están ejecutando realmente fuera de orden (utilice console.log() lugar de alert() ) en sus navegadores de destino. Si lo son, lo que es perfectamente posible con menos de navegadores / especificaciones perfectos, intente utilizar un evento de mouse diferente como mouseup . Mi conjetura es que usted podrá encontrar un acontecimiento que trabaje constantemente.

¡Buena suerte!

¿Has intentado usar mousedown lugar de click ? De esa manera usted debe obtener diferentes eventos para tocar y hacer clic sin ningún doble disparo. También es probable que necesite usar keydown para mantener este sitio accesible.

Hay un retraso de 300ms entre un toque físico y el disparo de un evento de clic en algunos navegadores móviles (por ejemplo, iOS Safari) me encontré con el mismo problema y FastClick plugin jQuery lo arregló para mí

Echa un vistazo FastClick

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.