Détecter que le navigateur n'a pas de souris et est uniquement tactiles

Je suis le développement d'une webapp (pas un site avec des pages de texte intéressant) avec une très interface différente pour le toucher (le doigt qui cache l'écran lorsque vous cliquez sur) et la souris (s'appuie fortement sur le vol stationnaire d'aperçu).
Comment puis-je détecter que mon utilisateur n'a pas de souris, pour lui présenter le droit de l'interface? J'ai l'intention de laisser un commutateur pour des personnes avec la souris et le toucher (à l'instar de certains ordinateurs portables).

L'événement tactile de capacité dans le navigateur ne peut pas vraiment dire que l'utilisateur est à l'aide d'une touche de l'appareil (par exemple, Modernizr ne coupe pas). Le code qui répond correctement à la question doit retourner false si l'appareil a une souris, true sinon. Pour les appareils avec la souris et le toucher, il doit retourner false (pas touch uniquement)

Comme une note de côté, mon interface tactile peut également être adapté pour le clavier-seuls les appareils, il est donc de plus l'absence de souris, je suis à la recherche à détecter.

À faire de la nécessité de plus en plus clair, voici l'interface que je suis à la recherche à mettre en œuvre:

//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);
  • Question connexe: Détecter si le navigateur a clavier/touches fléchées dans la page web
  • Je pense que vous devez repenser votre conception si vous voulez une application pour être applicable à la fois de bureau et mobiles/tactiles, mais ont des comportements différents pour chacun. Je ne pense pas que ce que vous êtes après est réellement possible à ce point, car une recherche rapide sur Google pour "javascript détecter la souris" montre moyennement utile de poster sur quirksmode.org pour la détection des différents états de la souris (clics, position, etc), mais des résultats nuls ou non à la souris existe réellement.
  • Peut-être que c'est parce que Google n'a pas aidé que j'ai demandé ici.
  • Avez-vous essayé document mouseenter de jquery? $(document).mouseenter(function(e) { alert("souris"); });
  • La fin de la partie, mais je vais jeter ici que vous devez toujours garder à l'esprit les nombreux appareils de nos jours qui soutiennent à la fois tactile ET la souris
  • ma question était assez précisément formulée au sujet ayant pas de souris, comme dans "pas de souris à tous". C'était au moment de présenter le droit de l'interface pour le droit des gens par défaut. pour une application qui pourrait être utilisé sur le terrain, les pieds dans la boue, dans un véhicule en mouvement ou au bureau sur un PC.
  • Juste une remarque pour la postérité - si vous cherchez à faire l'inverse (de détecter si la souris est disponible) stackoverflow.com/a/16423486/5056
  • Après avoir examiné de près d'une douzaine de pistes prometteuses seulement de rejeter chacun en quelques minutes, cette question me conduire tout à fait magnifiquement dingue.

InformationsquelleAutor nraynaud | 2011-10-20