In iOS 7 Safari gibt es jetzt zwei Möglichkeiten, um zurück/vorwärts zu navigieren - mit den herkömmlichen Zurück/Vorwärtspfeil-Pfeilen am unteren Rand oder durch Wischen vom Bildschirmrand aus. Ich benutze eine Animation, um zwischen den Seiten in meiner Ajax-App zu wechseln, aber ich möchte diesen Übergang nicht auslösen, wenn Benutzer mit dem Edge Swipe navigieren, da dies eine Animation selbst ist.In iOS 7 Safari, wie unterscheiden Sie Popstate-Ereignisse über Edge Swipe vs die Zurück/FWD-Tasten?
Die Popstate-Ereignisobjekte scheinen jedoch für beide Navigationsarten identisch zu sein - gibt es eine Möglichkeit, zwischen diesen beiden Arten von Benutzernavigationen zu unterscheiden, damit wir entsprechend reagieren können?
UPDATE: Ich konnte (was scheint) einen Fehler in iOS7 Safari verwenden, um die Kantenüberstreichung korrekt zu erkennen. Der Fehler ist, dass das touchend -Ereignis nicht ausgelöst wird (bis zum nächsten Berührungsereignis), wenn die Kantenüberstreichung verwendet wird (aber touchstart und touchmove sind). Also setze ich ein safeAnimate Flag und deaktiviere es auf touchmove - dann, wenn das Flag deaktiviert ist und der Popstate auftritt, weiß ich, dass es ein Edge Swipe ist.
Es ist 99% der Zeit richtig - die einzige Zeit, wo es möglicherweise scheitern könnte ist, wenn ein Benutzer teilweise wischt und dann loslässt und die aktuelle Seite wieder einrasten lässt (an diesem Punkt würde meine Flagge) immer noch deaktiviert) und tippen Sie dann auf den Zurück-Button (der keine Touch-Ereignisse auslöst). Um diesen letzten [edge] Fall zu behandeln, setze ich einen Timer auf touchmove, um das Flag nach 50ms wieder zu aktivieren.
Ja, es ist "dreckig", aber für jetzt bekommt es mich, was ich in fast jedem Fall will, also bin ich damit einverstanden - bis Apple den Fehler behebt, aber hoffentlich werden sie auch einen Indikator im popstate Ereignis liefern Objekt, das uns sagt, um welche Art von Navigation es sich handelt.
Hallo, könnten Sie Code-Snippet für Ihre Lösung bereitstellen? Danke;) –
Ja, bitte geben Sie ein Code-Snippet an, als ich hierher kam, um nach einer Lösung zu suchen. :) –
Ich kann bestätigen, dass dieser Fehler in iOS 9.3.2 behoben ist. – Rockallite