Обнаружение того, что в браузере нет мыши и работает только с сенсорным экраном.

Я разрабатываю веб-приложение (не веб-сайт со страницами с интересным текстом) с совершенно другим интерфейсом для сенсорного ввода (ваш палец скрывает экран при нажатии) и мыши ( в значительной степени полагается на предварительный просмотр при наведении). Как я могу определить, что у моего пользователя нет мыши, чтобы представить ему правильный интерфейс? Я планирую оставить переключатель для людей, использующих как мышь, так и сенсорное управление (как в некоторых ноутбуках).

Возможность сенсорного события в браузере на самом деле не означает, что пользователь использует сенсорное устройство (например, 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'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);
140
задан Samuel Rossille 31 July 2013 в 19:21
поделиться