Estoy desarrollando una aplicación web (no un sitio web con páginas de texto interesante) con una interfaz táctil muy diferente (su dedo oculta la pantalla cuando hace clic) y el mouse (depende en gran medida de la vista previa de desplazamiento). ¿Cómo puedo detectar que mi usuario no tiene mouse para presentarle la interfaz correcta? Tengo la intención de dejar un interruptor para las personas con el mouse y el tacto (como algunos portátiles).
La capacidad de evento táctil en el navegador no significa que el usuario esté usando un dispositivo táctil (por ejemplo, Modernizr no lo corta). El código que responde correctamente a la pregunta debería devolver falso si el dispositivo tiene un mouse, de lo contrario, verdadero. Para dispositivos con mouse y touch, debería devolver false (no solo touch)
Como nota al margen, mi interfaz táctil también puede ser adecuada para dispositivos con solo teclado, por lo que es más la falta de mouse que estoy buscando detectar.
Para aclarar la necesidad, aquí está la API que estoy buscando implementar:
// Level 1
// The current answers provide a way to do that.
hasTouch();
// Returns true if a mouse is expected.
// Note: as explained by the OP, this is not !hasTouch()
// I don't think we have this in the answers already, that why I offer a bounty
hasMouse();
// Level 2 (I don't think it's possible, but maybe I'm wrong, so why not asking)
// callback is called when the result of "hasTouch()" changes.
listenHasTouchChanges(callback);
// callback is called when the result of "hasMouse()" changes.
listenHasMouseChanges(callback);