Para algunas páginas web, utilizamos la funcionalidad de deslizar hacia la izquierda y hacia la derecha del iPhone para abrir los menús. Ahora, con iOS7, han introducido la capacidad de retroceder y avanzar a las páginas anteriores y siguientes del historial del navegador con movimientos de deslizamiento hacia la izquierda y hacia la derecha.
Pero, ¿hay alguna manera de deshabilitarlo para páginas específicas para no tener un comportamiento conflictivo en las acciones de deslizamiento?
Respuestas:
No, esto se hace a nivel del sistema operativo y la página web no recibe ninguna devolución de llamada
Vea este resumen de los cambios de safari en iOS7 que pueden causar problemas en su sitio web (incluido este gesto de deslizamiento)
fuente
No puede deshabilitarlo directamente, pero el deslizamiento nativo hacia atrás solo ocurre si hay algo en el historial del navegador.
No funcionará en todos los casos, pero si tiene una aplicación web de una sola página abierta en una nueva pestaña, puede evitar que se agregue al historial usando
window.history.replaceState(null, null, "#" + url)
en lugar de pushState o
document.location.hash = url
fuente
Tuve que usar 2 enfoques:
1) CSS solo se corrige para Chrome / Firefox
html, body { overscroll-behavior-x: none; }
2) Corrección de JavaScript para Safari
if (window.safari) { history.pushState(null, null, location.href); window.onpopstate = function(event) { history.go(1); }; }
Con el tiempo, Safari implementará overscroll-behavior-x y podremos eliminar el hack de JS
fuente
touchmove
eventos y solo ejecutar el código anterior si no fue precedido inmediatamente por un deslizamiento. Debería ser posible.overscroll-behavior-x: none;
Chrome en iOS 13 y no tuvo ningún efecto en el comportamiento de navegación por deslizamiento. Deslizar el dedo hacia la derecha en el borde izquierdo retrocede (e incluso si esta es la primera página en el historial de pestañas, aún regresa a la pantalla de inicio).