Empecé a usar eventos táctiles por un tiempo, pero me encontré con un problema bastante grande. Hasta ahora, verifiqué si las capacidades táctiles son compatibles y apliqué eventos selectivos basados en eso. De esta manera:Detección de capacidades del navegador y eventos selectivos para el mouse y toque
if(document.ontouchmove === undefined){
//apply mouse events
}else{
//apply touch events
}
Sin embargo, mis scripts dejaron de funcionar en Chrome5 (que actualmente es beta) en mi computadora. Investigué un poco, y como esperaba, en Chrome5 (a diferencia de Chrome anterior, Firefox, IE, etc.) document.ontouchmove
ya no es undefined
sino null
.
Al principio quería enviar un informe de error, pero luego me di cuenta: hay dispositivos que tienen capacidades de mouse y táctil, por lo que es natural, quizás Chrome ahora lo define porque mi sistema operativo podría admitir ambos tipos de eventos .
Por lo tanto, las soluciones parecen fáciles: aplique AMBOS tipos de eventos. ¿Derecha?
Bueno, el problema ahora tiene lugar en el móvil. Para ser compatible con versiones anteriores y admitir scripts que solo usan eventos de mouse, los navegadores de dispositivos móviles pueden intentar dispararlos también (al tacto). Entonces, con los eventos mouse y touch establecidos, un determinado controlador podría ser llamado dos veces cada vez.
¿Cuál es la forma de abordar esto? ¿Hay una mejor manera de verificar y aplicar eventos selectivos, o debo ignorar los problemas que podrían ocurrir si los exploradores disparan los eventos táctiles y de mouse a veces?
No puedo realizar la prueba, pero si devolver el mensaje falso en un evento táctil cancela su comportamiento predeterminado (activando el evento del mouse "compatible con versiones anteriores") – gnarf