터치 (손가락을 클릭하면 화면이 숨겨 짐)와 마우스 (호버 미리보기에 크게 의존)와 매우 다른 인터페이스를 가진 웹 응용 프로그램 (흥미로운 텍스트 페이지가있는 웹 사이트가 아님)을 개발 중입니다. 사용자에게 올바른 인터페이스를 제공 할 마우스가 없는지 어떻게 알 수 있습니까? 마우스와 터치가있는 사람 (예 : 일부 노트북)을위한 스위치를 남겨 둘 계획입니다.
브라우저의 터치 이벤트 기능이 실제로 사용자가 터치 장치를 사용하고 있다는 것을 의미하지는 않습니다 (예 : Modernizr가 자르지 않음). 장치에 마우스가 있으면 질문에 올바르게 대답하는 코드는 false를, 그렇지 않으면 true를 반환해야합니다. 마우스와 터치가있는 장치의 경우 false를 반환해야합니다 (터치 만이 아님)
참고로, 터치 인터페이스는 키보드 전용 장치에도 적합 할 수 있으므로 감지하려는 마우스가 더 적습니다.
요구를보다 명확하게하기 위해 구현하려는 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);