Für einige Webseiten verwenden wir die Wischfunktion nach links und rechts des iPhone, um die Menüs aufzurufen. Mit iOS7 haben sie nun die Möglichkeit eingeführt, bei Wischen nach links und rechts zu vorherigen und nächsten Seiten des Browserverlaufs vor- und zurückzuspulen.
Aber gibt es eine Möglichkeit, es für bestimmte Seiten zu deaktivieren, damit bei den Wischaktionen kein widersprüchliches Verhalten auftritt?
Antworten:
Nein, dies erfolgt auf Betriebssystemebene, und die Webseite erhält keinen Rückruf
Sehen Sie sich diese Zusammenfassung der Safari-Änderungen in iOS7 an, die Probleme auf Ihrer Website verursachen können (einschließlich dieser Wischgeste).
quelle
Sie können es nicht direkt deaktivieren, aber das native Zurückwischen erfolgt nur, wenn sich etwas im Browserverlauf befindet.
Es funktioniert nicht in jedem Fall, aber wenn Sie eine einzelne Seiten-Webanwendung in einem neuen Tab geöffnet haben, können Sie mithilfe von verhindern, dass sie zum Verlauf hinzugefügt wird
window.history.replaceState(null, null, "#" + url)
anstelle von pushState oder
document.location.hash = url
quelle
Ich musste 2 Ansätze verwenden:
1) CSS nur für Chrome / Firefox behoben
html, body { overscroll-behavior-x: none; }
2) JavaScript-Fix für Safari
if (window.safari) { history.pushState(null, null, location.href); window.onpopstate = function(event) { history.go(1); }; }
Im Laufe der Zeit wird Safari Overscroll-Behaviour-X implementieren und wir werden den JS-Hack entfernen können
quelle
touchmove
Ereignisse erkennen und den obigen Code nur ausführen, wenn ihm nicht unmittelbar ein Wischen vorausgeht. Es sollte möglich sein.overscroll-behavior-x: none;
auf Chrome unter iOS 13 getestet und es hatte keine Auswirkungen auf das Swipe-Navigationsverhalten. Wenn Sie am linken Rand nach rechts wischen, wird zurückgegangen (und selbst wenn dies die erste Seite im Registerkartenverlauf ist, wird immer noch zum Startbildschirm zurückgekehrt).