Sto sviluppando una webapp (non un sito Web con pagine di testo interessante) con un'interfaccia molto diversa per il tocco (il dito nasconde lo schermo quando si fa clic) e il mouse (si basa fortemente sull'anteprima al passaggio del mouse). Come posso rilevare che il mio utente non ha il mouse per presentargli l'interfaccia giusta? Ho in programma di lasciare un interruttore per le persone sia con il mouse che con il tocco (come alcuni notebook).
La funzionalità dell'evento touch nel browser non significa in realtà che l'utente stia utilizzando un dispositivo touch (ad esempio, Modernizr non lo taglia). Il codice che risponde correttamente alla domanda dovrebbe restituire falso se il dispositivo ha un mouse, vero altrimenti. Per i dispositivi con mouse e touch, dovrebbe restituire false (non solo touch)
Come nota a margine, la mia interfaccia touch potrebbe anche essere adatta per dispositivi solo tastiera, quindi è più la mancanza di mouse che sto cercando di rilevare.
Per rendere più chiara la necessità, ecco l'API che sto cercando di implementare:
// 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);