Tworzę aplikację internetową (nie witrynę internetową ze stronami z interesującym tekstem) z bardzo innym interfejsem dotykowym (palec chowa ekran po kliknięciu) i myszy (w dużej mierze opiera się na podglądzie po najechaniu kursorem). Jak mogę wykryć, że mój użytkownik nie ma myszy, aby pokazać mu właściwy interfejs? Planuję zostawić przełącznik dla osób z myszą i dotykiem (jak niektóre notebooki).
Możliwość obsługi zdarzenia dotykowego w przeglądarce nie oznacza w rzeczywistości, że użytkownik korzysta z urządzenia dotykowego (na przykład Modernizr go nie przerywa). Kod, który poprawnie odpowiada na pytanie, powinien zwracać fałsz, jeśli urządzenie jest wyposażone w mysz, w przeciwnym razie prawda. W przypadku urządzeń z myszą i dotykiem powinna zwracać wartość false (nie tylko dotyk)
Na marginesie, mój interfejs dotykowy może być również odpowiedni dla urządzeń obsługujących tylko klawiaturę, więc raczej chodzi o brak myszy, który chcę wykryć.
Aby wyjaśnić tę potrzebę, oto API, które chcę zaimplementować:
// 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);