मैं स्पर्श के लिए एक बहुत ही अलग इंटरफ़ेस के साथ एक वेबएप (रोचक वेबसाइट के पन्नों वाली वेबसाइट नहीं) विकसित कर रहा हूं (आपकी उंगली स्क्रीन को छुपाती है जब आप क्लिक करते हैं) और माउस (हॉवर पूर्वावलोकन पर बहुत निर्भर करता है)। मैं कैसे पता लगा सकता हूं कि मेरे उपयोगकर्ता के पास उसे सही इंटरफ़ेस प्रस्तुत करने के लिए कोई माउस नहीं है? मैं माउस और स्पर्श (जैसे कुछ नोटबुक) दोनों के साथ लोगों के लिए एक स्विच छोड़ने की योजना बना रहा हूं।
ब्राउज़र में टच इवेंट की क्षमता वास्तव में इसका मतलब यह नहीं है कि उपयोगकर्ता एक टच डिवाइस का उपयोग कर रहा है (उदाहरण के लिए, मॉडर्निज़र इसे काटता नहीं है)। कोड जो सही तरीके से प्रश्न का उत्तर देता है, यदि डिवाइस में माउस है, तो यह गलत है। माउस और स्पर्श वाले उपकरणों के लिए, इसे गलत लौटना चाहिए (केवल स्पर्श नहीं)
साइड नोट के रूप में, मेरा टच इंटरफ़ेस कीबोर्ड-ओनली डिवाइसेस के लिए भी उपयुक्त हो सकता है, इसलिए यह माउस की कमी है जिसका मैं पता लगा रहा हूँ।
आवश्यकता को और अधिक स्पष्ट करने के लिए, यहां वह एपीआई है जिसे मैं लागू करना चाहता हूं:
// 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);