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

Это противоположно обнаружению поддержки сенсорного ввода в браузерах. Как я могу определить, поддерживает ли браузер мышь? Chrome для ПК должен возвращать true, Safari для iPad должен возвращать false.

Я думаю, что мобильные браузеры будут возвращать ложные срабатывания для обычных уловок обнаружения.


person Matthew    schedule 20.01.2012    source источник


Ответы (3)


В браузерах, использующих Touch Events:

var clickEvent = ('ontouchstart' in window ? 'touchend' : 'click'); в основном говорит: «если устройство поддерживает прикосновение, слушайте только касание, а не щелкайте» - что на устройстве с несколькими входами немедленно отключает любое взаимодействие с помощью мыши, трекпада или клавиатуры.

В этой статье подробно обсуждается ваш вопрос здесь

Еще одна содержательная статья здесь

Но все зависит от того, чего вы хотите достичь.

person Devendra Bhatte    schedule 31.07.2013

Теоретически вы должны иметь возможность проверить, есть ли у него сенсорная поддержка, а затем сделать обратное. Я могу ошибаться, но, насколько мне известно, браузеры, которые не поддерживают события касания, будут поддерживать события мыши, и наоборот, поскольку разница между этими двумя браузерами обычно заключается в мобильных и обычных браузерах.

РЕДАКТИРОВАТЬ: Другая возможность может заключаться в использовании onmousemove так же, как вы используете ontouchmove для определения возможности касания. Однако я не уверен, что мобильные браузеры будут регистрировать onmousemove.

person CSturgess    schedule 20.01.2012
comment
А как насчет того, чтобы использовать моноблок с сенсорным экраном и мышью? - person qwertymk; 20.01.2012
comment
Я предполагаю, что ваш сайт не будет работать так, как вы действительно хотели, с этим, но требует ли он исправления, зависит от того, насколько распространены эти браузеры, что он с ними делает и захотят ли люди на этих устройствах использовать его сайт. . Это один из возможных обходных путей. - person CSturgess; 20.01.2012
comment
Это не сработает. Настольный Firefox возвращает true для обнаружения касания. Они используют одну и ту же кодовую базу для настольных компьютеров и мобильных устройств. - person Matthew; 20.01.2012

Этот метод проверяет, существует ли объект Touch без использования событий. Если нет, то у вас есть мышь. Я думаю, это самый простой способ сделать это. Он вернет false на редком устройстве с сенсорным экраном и мышью, поэтому вам нужно будет решить, повлияет ли это на ваш дизайн или нет.

function hasTouch() {
    return (typeof Touch == 'object' );
};

Демо: http://jsfiddle.net/ThinkingStiff/ux89v/

Сценарий:

function hasTouch() {
    return (typeof Touch == 'object' );
};

document.getElementById( 'touch' ).textContent = 'Mouse: ' + !hasTouch();

HTML:

<div id="touch"></div>
person ThinkingStiff    schedule 20.01.2012
comment
Устройства с мышью и сенсорным экраном будут становиться все реже и реже в ближайшие месяцы / годы, так как сенсорные экраны начнут появляться на ноутбуках и настольных компьютерах. Я не понимаю, почему сенсорный ввод не обязательно должен быть объектом на этих устройствах? - person Jon Gjengset; 08.02.2012
comment
@Jonhoo Да, именно так. Я просто отлаживал странное поведение в веб-приложении своего хобби-проекта и заметил, что мой код Javascript считает, что мой 17-дюймовый ноутбук с сенсорным экраном - это ... мобильный телефон или что-то в этом роде. Так как у него сенсорный экран. - person KajMagnus; 25.05.2015