Как проверить браузер на поддержку сенсорного запуска с помощью JS / jQuery?

В попытке следовать передовым методам мы пытаемся использовать правильные события JavaScript / jQuery в соответствии с тем, какое устройство вы используете. Например, мы создаем мобильный сайт с тегом, который будет иметь событие onclick или touch. В случае iPhone мы хотели бы использовать событие «touchstart». Мы хотели бы проверить, поддерживает ли их устройство «touchstart», прежде чем привязать этот обработчик к объекту. Если этого не произойдет, мы свяжем «onclick».

Каков наилучший способ сделать это?

вопрос задан 26.05.2010
Alex
1199 репутация

4 ответов


  • 85 рейтинг

    Вы можете определить, поддерживается ли событие:

    if ('ontouchstart' in document.documentElement) {
      //...
    }
    

    Посмотрите эту статью:

    Функция isEventSupported, опубликованная там, действительно хороша для обнаружения самых разнообразных событий и является кросс-браузерной.

    ответ дан CMS, с репутацией 572469, 26.05.2010
  • 11 рейтинг

    Используйте этот код, чтобы определить, поддерживает ли устройство касание.

    Также работает для 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;
        }
    
    }
    
    ответ дан George Filippakos, с репутацией 10725, 14.01.2013
  • 3 рейтинг

    Вы можете проверить, может ли typeof document.body.ontouchstart == "undefined" вернуться к обычным событиям в домене

    ответ дан antimatter15, с репутацией 1012, 26.05.2010
  • 1 рейтинг

    Я сделал полную демонстрацию, которая работает в каждом браузере с полным исходным кодом решения этой проблемы: Обнаружение устройств с сенсорным экраном в Javascript .

    ответ дан Manuel Ignacio López Quintero, с репутацией 1438, 12.05.2011