Je développe une application Web (pas un site Web avec des pages de texte intéressant) avec une interface très différente pour le toucher (votre doigt cache l'écran lorsque vous cliquez) et la souris (repose fortement sur l'aperçu au survol). Comment puis-je détecter que mon utilisateur n'a pas de souris pour lui présenter la bonne interface? Je prévois de laisser un interrupteur pour les personnes ayant à la fois la souris et le toucher (comme certains ordinateurs portables).
La capacité d'événement tactile dans le navigateur ne signifie pas en fait que l'utilisateur utilise un appareil tactile (par exemple, Modernizr ne le coupe pas). Le code qui répond correctement à la question doit renvoyer false si le périphérique dispose d'une souris, true sinon. Pour les appareils avec souris et tactile, il doit renvoyer false (pas uniquement tactile)
En remarque, mon interface tactile pourrait également convenir aux appareils à clavier uniquement, c'est donc davantage le manque de souris que je cherche à détecter.
Pour rendre le besoin plus clair, voici l'API que je cherche à implémenter:
// 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);