2012-01-20 12 views
10

Esto es lo opuesto a la detección de compatibilidad táctil en los navegadores. ¿Cómo puedo detectar si un navegador tiene soporte para mouse? Chrome para escritorio debería ser verdadero, Safari para iPad debería devolver falso.Detección de compatibilidad con el mouse

Estoy pensando que los navegadores móviles devolverán falsos positivos para los trucos de detección habituales.

Respuesta

0

Teóricamente, debería poder probar si tiene soporte táctil, luego tomar el reverso. Podría estar equivocado, pero hasta donde yo sé, los navegadores que no admiten eventos táctiles admitirán eventos de mouse, y viceversa, ya que la diferencia entre estos dos suele ser de navegadores móviles frente a navegadores normales.

EDITAR: Otra posibilidad podría ser usar onmousemove de la misma manera que usa ontouchmove para detectar la capacidad táctil. Sin embargo, no estoy seguro de si los navegadores móviles se registrarían onmousemove.

+1

¿Qué hay de alguien que usa un todo en uno con pantalla táctil y mouse? – qwertymk

+0

Supongo que su sitio no funcionaría de la manera que realmente quería con eso, pero si garantiza una solución depende de qué tan comunes son esos navegadores, qué está haciendo con él y si las personas en esos dispositivos querrían usar su sitio. Esta es una posible solución. – CSturgess

+1

Esto no funcionará. Desktop Firefox devuelve true para detección táctil. Usan la misma base de código en computadoras de escritorio y dispositivos móviles. – Matthew

0

Este método comprueba si el objeto Touch existe sin usar eventos. Si no es así, tienes un mouse. Creo que esa es la forma más fácil de hacerlo. Devolverá false en el raro dispositivo que tiene toque y un mouse, por lo que tendrá que decidir si eso afecta su diseño o no.

function hasTouch() { 
    return (typeof Touch == 'object'); 
}; 

Demostración: http://jsfiddle.net/ThinkingStiff/ux89v/

Guión:

function hasTouch() { 
    return (typeof Touch == 'object'); 
}; 

document.getElementById('touch').textContent = 'Mouse: ' + !hasTouch(); 

HTML:

<div id="touch"></div> 
+1

Los dispositivos con el mouse y el tacto se volverán cada vez menos frecuentes en los próximos meses/años con las pantallas táctiles comenzando a aparecer en computadoras portátiles y de escritorio ... ¿No veo por qué Touch no sería necesariamente un objeto en estos dispositivos? –

+0

@Jonhoo Sí exactamente. Solo estaba depurando un comportamiento extraño en mi aplicación web de proyecto de hobby, y noté que mi código Javascript cree que mi computadora portátil de 17 "con pantalla táctil es ... un teléfono móvil o algo así. Dado que tiene una pantalla táctil. – KajMagnus

1

en los navegadores que usan el tacto Eventos:

var clickEvent = ('ontouchstart' in window ? 'touchend' : 'click'); básicamente dice "si el dispositivo admite el toque, solo escuche touchend y no haga clic", que, en un dispositivo de entrada múltiple, bloquea inmediatamente cualquier interacción mediante el mouse, el panel táctil o el teclado.

En este artículo se analiza su pregunta en detalles here

Otro artículo profundo here

embargo, todo depende de lo que quiere lograr.

Cuestiones relacionadas