2012-01-20 2 views
10

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

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

ответ

0

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

EDIT: Другая возможность может быть использована onmousemove так же, как вы используете ontouchmove для обнаружения сенсорных возможностей. Тем не менее, я не уверен, что мобильные браузеры будут зарегистрировать onmousemove.

+1

Что касается человека, использующего многофункциональное устройство с сенсорным экраном и мышью? – qwertymk

+0

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

+1

Это не сработает. Desktop Firefox возвращает true для сенсорного обнаружения. Они используют ту же кодовую базу для настольных компьютеров и мобильных устройств. – Matthew

0

Этот метод проверяет, существует ли объект 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> 
+1

Устройства с мышью и прикосновением станут все менее и менее редкими в ближайшие месяцы/годы с сенсорными экранами, которые начинают появляться на ноутбуках и настольных компьютерах. Я не понимаю, почему Touch обязательно не будет объектом на этих устройствах? –

+0

@Jonhoo Да точно. Я просто отлаживал странное поведение в своем веб-приложении проекта хобби и заметил, что мой код Javascript считает, что мой 17-дюймовый ноутбук с сенсорным экраном - это мобильный телефон или что-то в этом роде. Так как у него есть сенсорный экран. – KajMagnus

1

В браузерах, которые используют сенсорные события:

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

В данной статье рассматривается ваш вопрос подробно here

Другой проницательной статья here

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

Смежные вопросы