Возможно, я только сейчас разглядел, а всё уже давно знают, но оказывается, что в Chrome 70 сделали вот такое: The ontouch* APIs default to disabled on desktop

Соответственно, если в своём коде вы опирались на наличие ключей 'ontouch*' в document или window, ваш код перестанет определять, что работает на touch-устройстве.

Я напоролся у себя на опечатку:

var isTouchDevice = (('ontouchstart' in window) || (navigator.MaxTouchPoints > 0) || (navigator.msMaxTouchPoints > 0));

И когда первое условие перестало быть true, второе облажалось. Должно было быть navigator.maxTouchPoints

А вот, к примеру, в jQuery UI Touch Punch 0.2.3 используется вот такой код:

  $.support.touch = 'ontouchend' in document;

Соответственно, также теряется поддержка.

Комментарии (3)


  1. KevlarBeaver
    07.11.2018 16:04
    -1

    Мне кажется, jQuery или подобная библиотека, должна существовать, отслеживать подобные изменения и через призму своих интерфейсов выдавать фиксированный результат, чего бы там ни творили в одностороннем порядке разработчики браузеров. Я немного отошёл от фронтэнда, подскажите, есть ли такое сейчас на практике?


    1. crmMaster
      07.11.2018 19:06

      На практике у нас есть гугло и хром, который как в свое время винда с ие творят что хотят и никого не спрашивают.


    1. bookworm Автор
      07.11.2018 19:37

      Должны и наверное так и делают. Но здесь речь о легаси-коде. jQuery UI Touch Punch кажется не развивается, а может быть и не используется уже. В большинстве случаев jQuery я не использую. React, Angular, ванила. Иногда приходится определять нативно.

      Вообще, с десктопами, которые имеют сенсорный экран, всегда как-то было не очень. Одно время я сталкивался с тем, что разработчики, определяя их как touch-устройства, поддерживали только touch-события и в результате возникали проблемы с управлением мышью. Особенно это касается drag-and-drop на touchstart/mousedown и touchend/mouseup.

      Кстати, гугловцы там же рекомендуют:

      It is suggest to use PointerEvent APIs to better support both touch and mouse.