W przypadku niektórych stron internetowych używamy funkcji przesuwania palcem w lewo iw prawo na iPhonie, aby wyświetlić menu. Teraz z iOS7 wprowadzili możliwość przechodzenia wstecz i do przodu do poprzednich i następnych stron historii przeglądarki za pomocą ruchów przesuwania palcem w lewo i w prawo.
Ale czy istnieje sposób na wyłączenie go dla określonych stron, aby nie powodować konfliktów podczas operacji przesuwania?
Odpowiedzi:
Nie, odbywa się to na poziomie systemu operacyjnego, a strona internetowa nie otrzymuje żadnego wywołania zwrotnego
Zobacz podsumowanie zmian safari w iOS7, które mogą powodować problemy w Twojej witrynie (w tym ten gest przesunięcia)
źródło
Nie możesz go wyłączyć bezpośrednio, ale natywne przesunięcie z powrotem dzieje się tylko wtedy, gdy coś jest w historii przeglądarki.
Nie będzie działać w każdym przypadku, ale jeśli masz pojedynczą aplikację internetową otwartą w nowej karcie, możesz zapobiec dodawaniu jej do historii, używając
window.history.replaceState(null, null, "#" + url)
zamiast pushState lub
document.location.hash = url
źródło
Musiałem użyć 2 podejść:
1) Poprawka CSS tylko dla Chrome / Firefox
html, body { overscroll-behavior-x: none; }
2) Poprawka JavaScript dla Safari
if (window.safari) { history.pushState(null, null, location.href); window.onpopstate = function(event) { history.go(1); }; }
Z czasem Safari zaimplementuje overscroll-behawior-x i będziemy mogli usunąć hack JS
źródło
touchmove
zdarzeń i wykonywać powyższy kod tylko wtedy, gdy nie był on bezpośrednio poprzedzony przesunięciem. Powinno być możliwe.overscroll-behavior-x: none;
w Chrome na iOS 13 i nie miało to żadnego wpływu na zachowanie nawigacji poprzez przesuwanie. Przesunięcie w prawo przy lewej krawędzi powoduje cofnięcie się (i nawet jeśli jest to pierwsza strona w historii kart, nadal wraca do ekranu głównego).