Обнаружение поддержки мыши

Это противоположность обнаружению поддержки касания в браузерах. Как определить, поддерживает ли браузер поддержку мыши? 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>