Pour certaines pages Web, nous utilisons les fonctions de glissement gauche et droit de l'iPhone pour afficher les menus. Désormais, avec iOS7, ils ont introduit la possibilité de revenir en arrière et d'avancer aux pages précédentes et suivantes de l'historique du navigateur en glissant les mouvements à gauche et à droite.
Mais y a-t-il un moyen de le désactiver pour des pages spécifiques afin de ne pas avoir un comportement conflictuel sur les actions de balayage?
Non, cela se fait au niveau du système d'exploitation et la page Web ne reçoit aucun rappel.
Voir ce résumé des modifications apportées à Safari dans iOS7 qui pourrait causer des problèmes à votre site Web (y compris ce geste de balayage)
Vous ne pouvez pas le désactiver directement, mais le balayage natif en arrière ne se produit que s'il existe quelque chose dans l'historique du navigateur.
Cela ne fonctionnera pas dans tous les cas, mais si vous avez une application Web d'une seule page ouverte dans un nouvel onglet, vous pouvez l'empêcher d'ajouter à l'historique en utilisant
window.history.replaceState(null, null, "#" + url)
au lieu de pushState ou
document.location.hash = url
Je devais utiliser 2 approches:
1) CSS ne corrige que pour Chrome/Firefox
html, body {
overscroll-behavior-x: none;
}
2) Correction JavaScript pour Safari
if (window.safari) {
history.pushState(null, null, location.href);
window.onpopstate = function(event) {
history.go(1);
};
}
Au fil du temps, Safari implémentera overscroll-behavior-x et nous pourrons supprimer le piratage JS.