Ответ 1
Нет, это делается на уровне ОС, и веб-страница не получает обратного вызова
См. это резюме изменений сафари в iOS7, которые могут вызвать проблемы на вашем веб-сайте (включая этот жестов)
Для некоторых веб-страниц мы используем прокрутку левой и правой функциональности iPhone, чтобы вытащить меню. Теперь с iOS7 они ввели возможность вернуться и перейти на предыдущую и последующие страницы истории браузера, чтобы прокрутить левое и правое движения.
Но есть ли способ отключить его для определенных страниц, чтобы не иметь противоречивого поведения при действиях салфетки?
Нет, это делается на уровне ОС, и веб-страница не получает обратного вызова
См. это резюме изменений сафари в iOS7, которые могут вызвать проблемы на вашем веб-сайте (включая этот жестов)
Вы не можете отключить его напрямую, но родной салфетки назад происходит только, если в истории браузера есть что-то.
Он не будет работать в каждом случае, но если у вас есть одностраничное веб-приложение, открытое на новой вкладке, вы можете помешать ему добавить в историю с помощью
window.history.replaceState(null, null, "#" + url)
вместо pushState или
document.location.hash = url
Мне пришлось использовать два подхода:
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 будет реализовывать overcroll-behavior-x, и мы сможем удалить JS-хак
Apple предоставила рекомендации о том, как распознавать и отменять жесты. См. Здесь: Предотвращение прокрутки между веб-страницами в iPad Safari