Как определить устройство с сенсорным экраном с помощью JavaScript?
Иногда вы можете захотеть включить в свое веб-приложение некоторые функции, которые должны быть доступны только для устройств с сенсорным экраном. Вам может понадобиться это обнаружение при внедрении более новых интеллектуальных элементов управления для пользователей с сенсорным экраном в игровом приложении или приложении GPS и навигации. Хотя существует множество библиотек JavaScript, таких как Modernizer, jQuery и т. Д., Которые явно предназначены для выполнения таких задач.
Следует отметить, что устройство поддерживает сенсорные события, не обязательно означает, что это исключительно устройство с сенсорным экраном. Многие ультрабуки высокого класса оснащены сенсорным экраном. Поэтому для лучшего взаимодействия с пользователем вам следует рассмотреть еще несколько атрибутов наряду с проверкой устройства с сенсорным экраном.
Чтобы выполнить эту проверку, ориентируясь на все возможные браузеры, мы будем использовать следующие три свойства:
- ontouchstart: обработчик событий, который обрабатывает событие, инициированное после прикосновения к элементу DOM.
- maxTouchPoints: свойство интерфейса Navigator, доступное только для чтения, возвращает максимальное количество одновременных точек касания, поддерживаемых устройством.
- msMaxTouchPoints: То же, что и выше, только с префиксом поставщика «ms» для целевых браузеров IE 10 и ниже.
Синтаксис:
function is_touch_enabled() { return ( 'ontouchstart' in window ) || ( navigator.maxTouchPoints > 0 ) || ( navigator.msMaxTouchPoints > 0 ); } |
Пример: в этом примере отображается изображение, если оно обнаруживает устройство с сенсорным экраном, в противном случае изображение не будет отображаться.
Выход:
- Вывод на несенсорный экран:
- Вывод на сенсорный экран:
Пример 2: В этом примере <div> можно перетаскивать, только если устройство поддерживает сенсорное управление.
<!DOCTYPE html> < html > < head > < title > Detect touch screen device using JavaScript </ title > < link href = rel = "stylesheet" > </ script > < script src= jquery.ui.touch-punch.min.js"> </ script > < style > #draggable { width: 150px; height: 50px; text-align: center; } </ style > < script > function is_touch_enabled() { return ( 'ontouchstart' in window ) || ( navigator.maxTouchPoints > 0 ) || ( navigator.msMaxTouchPoints > 0 ); } if( is_touch_enabled() ) { $(function() { $( "#draggable" ).draggable(); }); } </ script > </ head > < body > < div id = "draggable" class = "ui-widget-content" > < p >Draggable Elements!</ p > </ div > </ body > </ html > |
Выход:
- Вывод на несенсорный экран:
- Вывод на сенсорный экран: