Respuesta corta: Tu prueba volverá a funcionar ahora en cualquier momento de Chrome. Pero probablemente no para siempre
Respuesta larga:
El equipo de Chrome quería añadir eventos táctiles en los navegadores de escritorio, debido al creciente número de escritorios con pantallas táctiles con capacidad. Entonces lo hicieron, probablemente alrededor de 24.0 Canary. Luego descubrieron que mucha gente estaba haciendo lo que está haciendo para "detectar dispositivos táctiles". El problema con esto es , solo está probando si el explorador admite eventos táctiles, no el dispositivo (lo mismo ocurre con Modernizr.touch
). Más específicamente, solo el W3C/Apple TouchEvents API.
No querían enviar diferentes versiones de Chrome para táctil/no táctil, por lo que lo hicieron para que solo activen las API táctiles si detectan un dispositivo táctil al inicio (se discute aquí: http://code.google.com/p/chromium/issues/detail?id=152149).
Por lo tanto, ahora su prueba funcionará de nuevo ... PERO - si desea probar su futuro, puede cambiar su enfoque. He aquí por qué:
No todos los navegadores realizarán este cambio de Chrome.
La capacidad táctil se está convirtiendo en una función dinámica: con Microsoft Surface, etc., puede desconectarse del teclado y el mouse y tocar solo, los usuarios pueden tener monitores táctiles conectados mediante conmutadores KVM que no se detectarán al inicio, etc. Los proveedores del navegador no quieren que las API aparezcan y desaparezcan, sería una pesadilla, por lo que en algún momento los chicos de Chrome probablemente habilitarán permanentemente las API de TouchEvents en todos los dispositivos. Esa prueba comenzará a arrojar "falsos positivos" de nuevo.
En cambio, mira el PointerEvents API, lo que da un interfaz de eventos común para las entradas de ratón, táctil y el lápiz. Si está pensando en hacer botones más grandes para las interfaces táctiles, etc, hay una especificación pointer media query también (y una hover uno), que aparecerá en los navegadores pronto - esta diferencia entre los diferentes precisiones de dispositivos de entrada - none
/coarse
/fine
- y ser dinámico le permitirá ajustar sus estilos en función de los dispositivos de puntero conectados, ya que están conectados/desconectados.Muy genial.
Modernizr v3.0 (dejando caer dentro de las próximas semanas) tendrá un par de cambios relevantes aquí:
- Un detectar para se añade
Modernizr.touch
se está cambiando el nombre a una mejor Modernizr.touchevents
la API PointerEvents representan lo que significa
Así que me gustaría considerar el uso de PointerEvents si está disponible (que ya está en IE10), cayendo de nuevo a un interruptor Modernizr.touchevents
si no.
¿Dice que devuelve falso cuando el navegador admite el toque o que devuelve verdadero cuando el navegador admite el tacto pero es posible que no haya hardware táctil? –
@SamuelEdwinWard Aclaré la pregunta –
Supongo que solo vinculando ambos eventos no funcionará. –