Почему на touch-ноутбуках некоторые SPA перестали поддерживать touch-события

    Возможно, я только сейчас разглядел, а всё уже давно знают, но оказывается, что в 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;
    

    Соответственно, также теряется поддержка.
    • +11
    • 2,6k
    • 3
    Поделиться публикацией

    Похожие публикации

    Комментарии 3
      –1
      Мне кажется, jQuery или подобная библиотека, должна существовать, отслеживать подобные изменения и через призму своих интерфейсов выдавать фиксированный результат, чего бы там ни творили в одностороннем порядке разработчики браузеров. Я немного отошёл от фронтэнда, подскажите, есть ли такое сейчас на практике?
        +3
        На практике у нас есть гугло и хром, который как в свое время винда с ие творят что хотят и никого не спрашивают.
          +1
          Должны и наверное так и делают. Но здесь речь о легаси-коде. 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.

        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

        Самое читаемое