Dokunmak için çok farklı bir arayüze (tıkladığınızda parmağınız ekranı gizler) ve fare (vurgulu önizlemeye büyük ölçüde dayanır) ile bir web uygulaması (ilginç metin sayfaları içeren bir web sitesi değil) geliştiriyorum. Kullanıcının ona doğru arayüzü sunmak için faresi olmadığını nasıl tespit edebilirim? Hem fare hem de dokunma özellikli insanlar için bir anahtar bırakmayı planlıyorum (bazı dizüstü bilgisayarlar gibi).
Tarayıcıdaki dokunma olayı özelliği, kullanıcının bir dokunmatik cihaz kullandığı anlamına gelmez (örneğin, Modernizr onu kesmez). Cihazda fare varsa, soruyu doğru yanıtlayan kod yanlış, aksi takdirde true döndürmelidir. Fare ve dokunma özelliğine sahip cihazlar için yanlış dönmelidir (yalnızca dokunma değil)
Bir yan not olarak, dokunmatik arayüzüm yalnızca klavyeye sahip cihazlar için de uygun olabilir, bu yüzden tespit etmek istediğim fare eksikliği daha fazla.
Gereksinimi daha açık hale getirmek için, uygulamak istediğim 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);