ฉันกำลังพัฒนาเว็บแอพ (ไม่ใช่เว็บไซต์ที่มีหน้าข้อความที่น่าสนใจ) พร้อมอินเทอร์เฟซสำหรับการสัมผัสที่แตกต่างกันมาก (นิ้วของคุณซ่อนหน้าจอเมื่อคุณคลิก) และเมาส์ (อาศัยการแสดงตัวอย่างแบบโฮเวอร์มาก) ฉันจะตรวจสอบได้อย่างไรว่าผู้ใช้ของฉันไม่มีเมาส์ที่จะนำเสนออินเตอร์เฟซที่ถูกต้องกับเขา ฉันวางแผนที่จะออกจากสวิตช์สำหรับผู้ที่มีทั้งเมาส์และสัมผัส (เช่นสมุดบันทึกบางส่วน)
ความสามารถในการแตะเหตุการณ์ในเบราว์เซอร์ไม่ได้หมายความว่าผู้ใช้กำลังใช้อุปกรณ์สัมผัส (ตัวอย่างเช่น 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);