Предотвращение пролистывания веб-страниц в iPad Safari - PullRequest
0 голосов
/ 03 мая 2018

Проведите от левого и правого краев браузера Safari на моем iPad, перемещайтесь между открытыми в данный момент веб-страницами. Есть ли способ предотвратить это?

Я попытался добавить обработчики touchstart и touchmove на краю страницы, которые stopPropagation и preventDefault, но они, похоже, не имеют никакого эффекта, равно как и touch-action CSS.

Аналогичный вопрос был задан в 2014 году с отрицательными ответами: iOS 7 - есть ли способ отключить функцию прокрутки назад и вперед в Safari?

Есть ли обходной путь в 2018 году?

Ответы [ 4 ]

0 голосов
/ 27 марта 2019

Вы не можете, это было проблемой с первых дней существования iOS. Они постоянно используют такие мощные функции веб-приложений, как работники сферы обслуживания и webgl.

Лучшее, что вы можете сделать, - это то, что вы должны делать для каждого браузера, максимально эффективно использовать обнаружение функций для каждого браузера. Давно прошли времена, когда все сайты выглядели одинаково в каждом браузере.

При необходимости используйте сэндвич, разрешите боковые движения в браузерах, которые его поддерживают. Нет ничего постыдного в том, чтобы отключить небольшую функцию в нескольких браузерах для пользы остальных пользователей.

0 голосов
/ 03 мая 2018

Похоже, что невозможно отключить эту функцию, поэтому в качестве обходного пути я обнаружил, что мертвой зоны в 24 пикселя по обе стороны страницы, по-видимому, достаточно, чтобы остановить непреднамеренную навигацию.

Вот мой CSS:

body {
  position: fixed;
  top: 0;
  bottom: 0;
  left: 24px;
  right: 24px;
  background-color: #ccc;
}

Создание тела position: fixed также останавливает Safari, создающий раздражающий эффект перескрутки / отскока.

0 голосов
/ 03 сентября 2018

Попробуйте это в теге <body>:

onload='ontouchmove()="return(function(event) { event.preventDefault(); event.stopPropagation(); return(false); } );"'

Я предполагаю, что могут быть некоторые побочные эффекты, если я не сообщу IOS о перемещении, но для SPW они, вероятно, незначительные.

0 голосов
/ 03 мая 2018

Apple предоставила эти рекомендации после iOS9.

Руководство позволяет отключить

  1. Прокрутка

    function touchMove(event) {
      // Prevent scrolling on this element
      event.preventDefault();
      ...
    }
    
  2. Щепотка и увеличение

    function gestureChange(event) {
      // Disable browser zoom
      event.preventDefault();
      ...
    }
    

Вы можете идентифицировать жест смахивания следующим образом:

  1. Начните жест, если вы получаете событие Touchstart, содержащее одно целевое прикосновение.
  2. Прервать жест, если в любое время вы получили событие с> 1 касаниями.
  3. Продолжить жест, если вы получаете событие касания в основном в направлении х.
  4. Прервать жест, если вы получили прикосновение событие в основном у-направлении.
  5. Завершить жест, если вы получили каскад событие.

Полное руководство - плакат здесь .

Дайте мне знать, если вам нужна дополнительная помощь.

Нитин, Defuzed

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...