Wie Sie verhindern, dass ein Neuladen der web-Seite aus dem cache während der Nutzung von mobile safari browser?
Mobile Safari verwendet eine spezielle caching-Mechanismus Page Cache
( hier ), die im Grunde hält die aktuelle Seite lebendig, aber im Ruhezustand befinden, wenn wir navigieren Sie zu einer anderen Seite. Auf diese Weise können Sie sofort die Anzeige der vorherigen Seite in Ihrem aktuellen Zustand, wenn der Benutzer drückt back
- Taste.
Dies ist nützlich für die navigation und das surfen web, aber für Besondere Fälle wird dies ärgerlich, da Sie möglicherweise benötigen, um eine neue Kopie der Seite jedes mal, wenn der Benutzer navigiert zu dieser Seite. (in meinem Fall habe ich auf den Seiten: login und Hauptseite).
Ich bin mir völlig bewusst, dass nichts verhindert, dass Benutzer das öffnen mehrerer tabs der gleichen Anwendung. Ich nicht besorgt darüber.
Den cross-browser-Lösung für die Verhinderung einer Seite zwischengespeichert werden nicht helfen, als Safari ist, halten Sie die Seite geöffnet, aber unsichtbar und ausgesetzt.
Den Fenster.onpageshow und Handhabung event.persisted
nicht helfen, da es scheint, dass der browser nicht ausführen onpageshow
Ereignis für einige Gründe, das zweite mal (beim drücken back
- Taste).
Hinweis für diejenigen, die nicht wissen, was onpageshow
Veranstaltung über: Apple rät von der Verwendung load
und unload
Veranstaltungen, weil mit dem Konzept der page-cache jene Ereignisse, die keinen klaren Sinn. Also onpageshow
soll das tun, was erwarten wir von load
Veranstaltung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Andere mögliche Lösung ist der Blick auf die
event.persisted
- flag, um zu bestimmen, ob es oder nicht zwischengespeichert:Beim drücken der zurück-Taste, erhalten Sie das gleiche Dokument, wie Sie vor hatten (die alte Seite wurde gesperrt). Also, wenn Sie behandeln
onpagehide
Veranstaltung und machen einige änderungen an der Seite vor der Navigation der neuen Seite, werden die änderungen dort gespeichert.Habe ich versucht, indem Sie ein Skript block, um die
body
unmittelbar vor der Navigation:dies nicht funktioniert, weil das Skript sofort führt, wo es meine Absicht war, um ihn auszuführen, wenn der Benutzer zurück zu der Seite.
ABER wenn Sie Sie verschieben Ihre DOM-änderungen nach dem verlassen
pagehide
Rückruf, (so etwas):TADA es funktioniert! sobald der Benutzer drückt Taste "zurück" auf der nächsten Seite, Safari lädt die Seite ausgesetzt und führt diesen neuen block Skript nicht ausgeführt hat, vor.
$body.append("<script type='text/javascript'>window.location.reload();<\/script>");
warum nicht einfach tunwindow.location.reload()
?window.location.reload
es funktioniert nicht. (War auch nicht), wenn ich daran richtig safari nicht laden, die Seite korrekt oder fällt der ganze laden. Wir müssen das Skript ausführen, wenn die Seite nach einer Unterbrechung fortgesetzt