Я розробляю веб-сторінку (не веб-сайт зі сторінками цікавого тексту) з дуже різним інтерфейсом для дотику (ваш палець приховує екран при натисканні) та миші (значною мірою спирається на попередній перегляд наведення курсора). Як я можу виявити, що мій користувач не має миші, щоб представити йому правильний інтерфейс? Планую залишити вимикач для людей як з мишкою, так і з дотиком (як у деяких ноутбуках).
Можливість сенсорних подій у веб-переглядачі насправді не означає, що користувач використовує сенсорний пристрій (наприклад, Modernizr не вирізає його). Код, який правильно відповідає на запитання, повинен повернути помилкове значення, якщо у пристрої є миша, правда - інакше. Для пристроїв, які користуються мишею та дотиком, він повинен повертати помилкове значення (не торкатися лише)
Як бічна примітка, мій сенсорний інтерфейс також може бути придатним для пристроїв, які працюють лише на клавіатурі, тому я більше не вистачаю миші.
Щоб зрозуміти необхідність, ось 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);