Обнаружение поддержки мыши
Это противоположность обнаружению поддержки касания в браузерах. Как определить, поддерживает ли браузер поддержку мыши? Chrome для рабочего стола должен возвращать true, Safari для iPad должен возвращать false.
Я думаю, что мобильные браузеры вернут ложные срабатывания для обычных трюков обнаружения.
Ответы
Ответ 1
В браузерах, использующих сенсорные события:
var clickEvent = ('ontouchstart' in window ? 'touchend' : 'click');
в основном говорит: "если устройство поддерживает сенсорный режим, только слушать touchhend, а не щелкнуть" - который на устройстве с несколькими входами немедленно отключает любое взаимодействие с помощью мыши, трекпада или клавиатуры.
В этой статье подробно обсуждается ваш вопрос здесь
Еще одна проницательная статья здесь
Но все зависит от того, чего вы хотите достичь.
Ответ 2
Теоретически, вы должны быть в состоянии проверить, имеет ли он поддержку касания, а затем принять обратное. Я мог ошибаться, но, насколько мне известно, браузеры, которые не поддерживают события касания, будут поддерживать события мыши, и наоборот, поскольку разница между этими двумя обычно является мобильным или обычным браузерами.
EDIT: Другая возможность может быть использована onmousemove так же, как вы используете ontouchmove для обнаружения сенсорных возможностей. Тем не менее, я не уверен, что мобильные браузеры будут регистрироваться в onmousemove.
Ответ 3
Этот метод проверяет, существует ли объект Touch
без использования событий. Если это не так, у вас есть мышь. Я думаю, что это самый простой способ сделать это. Он вернет false
на редкое устройство с сенсорным управлением и мышью, поэтому вам придется решить, влияет ли это на ваш дизайн или нет.
function hasTouch() {
return (typeof Touch == 'object' );
};
Демо: http://jsfiddle.net/ThinkingStiff/ux89v/
Script:
function hasTouch() {
return (typeof Touch == 'object' );
};
document.getElementById( 'touch' ).textContent = 'Mouse: ' + !hasTouch();
HTML:
<div id="touch"></div>