Я разрабатываю webapp (а не веб-сайт со страницами интересного текста) с совершенно другим интерфейсом для касания (ваш палец скрывает экран при нажатии) и мышь (в значительной степени зависит от предварительного просмотра hover). Как я могу обнаружить, что у моего пользователя нет мыши, чтобы представить ему правильный интерфейс? Я планирую оставить переключатель для людей с мышью и касанием (например, с некоторыми ноутбуками).
Функция сенсорного события в браузере фактически не означает, что пользователь использует сенсорное устройство (например, Modernizr не сокращает его). Код, который правильно отвечает на вопрос, должен возвращать значение false, если устройство имеет мышь, в противном случае - true. Для устройств с мышью и прикосновением он должен возвращать false (только не касаться)
В качестве побочного примечания, мой сенсорный интерфейс может также быть подходящим для устройств с клавиатурой, поэтому больше не хватает мыши, которую я ищу для обнаружения.
Чтобы сделать необходимость более ясной, вот API, который я ищу для реализации:
// 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 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);