Как проверить браузер для поддержки touchstart с помощью JS / jQuery?
в попытке следовать рекомендациям мы пытаемся использовать правильные события JavaScript/jQuery в соответствии с тем, какое устройство вы используете. Например, мы создаем мобильный сайт с тегом, который будет иметь событие onclick или touch. В случае iPhone мы хотели бы использовать событие "touchstart". Мы хотели бы проверить, поддерживает ли их устройство "touchstart", прежде чем привязывать этот обработчик к объекту. Если это не так, то мы свяжем "onclick" вместо этого.
Что такое лучший способ сделать это?
4 ответов
вы можете определить, поддерживается ли событие:
if ('ontouchstart' in document.documentElement) {
//...
}
посмотрите на эту статью:
на isEventSupported
функция, опубликованная там, действительно хороша в обнаружении широкого спектра событий, и это кросс-браузер.
используйте этот код, чтобы определить, поддерживает ли устройство touch.
также работает для windows 8 IE10, который использует событие "MSPointerDown" вместо "touchmove"
var supportsTouch = false;
if ('ontouchstart' in window) {
//iOS & android
supportsTouch = true;
} else if(window.navigator.msPointerEnabled) {
// Windows
// To test for touch capable hardware
if(navigator.msMaxTouchPoints) {
supportsTouch = true;
}
}
вы можете проверить, если typeof document.body.ontouchstart == "undefined"
чтобы вернуться к обычным событиям dom
Я сделал полную демострацию, которая работает в каждом браузере с полным исходным кодом решения этой проблемы: обнаружение устройств с сенсорным экраном в Javascript.