Для некоторых веб-страниц мы используем функциональные возможности iPhone смахивания влево и вправо для вывода меню. Теперь, с iOS7, они представили возможность возвращаться и вперед к предыдущей и следующей страницам истории браузера с помощью свайпов влево и вправо.
Но есть ли способ отключить его для определенных страниц, чтобы не было противоречивого поведения при действиях смахивания?
Ответы:
Нет, это делается на уровне ОС, и веб-страница не получает обратного вызова
См. Сводку изменений Safari в iOS7, которые могут вызвать проблемы на вашем веб-сайте (включая этот жест смахивания)
источник
Вы не можете отключить его напрямую, но родное смахивание назад происходит только в том случае, если что-то есть в истории браузера.
Это не будет работать во всех случаях, но если у вас есть одностраничное веб-приложение, открытое в новой вкладке, вы можете предотвратить его добавление в историю, используя
window.history.replaceState(null, null, "#" + url)
вместо pushState или
document.location.hash = url
источник
Пришлось использовать 2 подхода:
1) Исправление только CSS для Chrome / Firefox
html, body { overscroll-behavior-x: none; }
2) Исправление JavaScript для Safari
if (window.safari) { history.pushState(null, null, location.href); window.onpopstate = function(event) { history.go(1); }; }
Со временем Safari будет реализовывать overscroll-behavior-x, и мы сможем удалить взлом JS.
источник
touchmove
события и выполнять приведенный выше код только в том случае, если ему не предшествовало смахивание. Это должно быть возможно.overscroll-behavior-x: none;
Chrome на iOS 13, и это не повлияло на поведение свайп-навигации. Смахивание вправо по левому краю возвращает назад (и даже если это первая страница в истории вкладок, она все равно возвращается на главный экран).