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:

  • ¿Cuáles son las funciones POSIX más importantes que no están disponibles en Android?
  • ¿El enlace JavaScript de JNI de Android pasa eficientemente TypedArray / ArrayBuffer a Java como una matriz?
  • Depuración de Kernel de Android
  • Cocos2d-x android no puede resolver la biblioteca coscos2dx
  • Pantalla negra al volver a la actividad de reproducción de vídeo en Android
  • ¿Cuál es la diferencia entre separar un Fragmento y eliminarlo?
  • 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/

  • Instruir la secuencia de comandos Gradle de Android para eliminar apks no alineados y limpiar los archivos de artefacto
  • Android: Cómo realizar cambios en la vista principal de un botón
  • Obtener la distancia entre dos puntos geográficos
  • Ocultar barra de desplazamiento de HorizontalScrollView
  • Xamarin.Forms swipe gesture recognizer
  • Cómo reproducir o reanudar la música de otro reproductor de música de mi código?
  • 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.