Tôi đang phát triển một ứng dụng web (không phải là trang web có các trang văn bản thú vị) với giao diện rất khác nhau để chạm (ngón tay của bạn che màn hình khi bạn nhấp) và chuột (phụ thuộc nhiều vào xem trước di chuột). Làm cách nào tôi có thể phát hiện ra rằng người dùng của tôi không có chuột để trình bày cho anh ta giao diện phù hợp? Tôi dự định để lại một công tắc cho những người có cả chuột và cảm ứng (như một số máy tính xách tay).
Khả năng sự kiện cảm ứng trong trình duyệt không thực sự có nghĩa là người dùng đang sử dụng thiết bị cảm ứng (ví dụ: Modernizr không cắt nó). Mã trả lời đúng câu hỏi sẽ trả về false nếu thiết bị có chuột, ngược lại. Đối với các thiết bị có chuột và cảm ứng, thiết bị sẽ trả về sai (không chỉ chạm)
Là một lưu ý phụ, giao diện cảm ứng của tôi cũng có thể phù hợp với các thiết bị chỉ sử dụng bàn phím, do đó, việc thiếu chuột tôi đang tìm cách phát hiện càng nhiều.
Để làm cho nhu cầu rõ ràng hơn, đây là API mà tôi đang tìm cách triển khai:
// 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);