Zum erzwingen von Neuladen einer Seite, wenn mit browser-zurück-button?
Muss ich irgendwie erkennen, dass der Nutzer gedrückt hat Browser-zurück-button und laden Sie die Seite mit refresh (Neuladen der Inhalte und CSS) mit jquery.
Zu erkennen, wie eine solche Aktion über jquery?
Weil jetzt einige Elemente werden nicht erneut geladen, wenn ich den zurück-button im browser. Aber wenn ich links in der website ist alles aktualisiert und zeigten richtig.
WICHTIG!
Einige Leute haben wahrscheinlich missverstanden, was ich will. Ich will nicht die aktuelle Seite aktualisieren. Ich will aktualisieren Sie die Seite, die geladen wird, nachdem ich die zurück-Taste drücken. hier ist, was ich meine, in einer ausführlicheren Art und Weise:
- Benutzer besucht page1.
- während auf page1 - klickt er auf einen link zur page2.
- er umgeleitet wird auf der Seite 2
- nun (Wichtiger Teil!) klickt er auf den zurück-button im browser, da will er zurück zu page1
- er ist wieder auf die Seite 1 - und nun die Seite 1 wird neu geladen und etwas alarmiert, wie "Sie sind zurück!"
- Statt hacking normale user Verhalten, warum nicht Sie versuchen zu verstehen, warum dein code nicht funktioniert beim laden der Seite, und Sie müssen die Seite neu zu laden?
- Ich die Klassen ändern, um die änderungen anzeigen. Wenn Benutzer klickt auf etwas, ändert sich der Wert in der Datenbank per ajax. Wenn ajax fertig ist die css-Klasse cahnge zum Beispiel von
on
zuoff
. Und es ist ok, es ist gespeichert in der db, sieht der Benutzer alles richtig. Nun klickt er auf einige andere link. Z.B. über uns-Seite, richtig? Nun, er ist auf der über uns-Seite. Werden, beschließt, gehen Sie zurück auf die Vorherige Seite und auf die Schaltfläche zurück klickt im browser. Und wenn er zurück ist, sieht er die änderungen auf der Seite, wie der browser zeigte die Seite (wahrscheinlich einige browser-cahing), bevor er triggerd der ajax (on/off-Klassen) - Sind Sie mit get oder post für Ihre Ajax-call?
- part2.. ich benutze auch data-Attribut, und es hat keine Wirkung. Alles wäre großartig, wenn die Seite erneut geladen wurde. Wenn ich drücken Sie die Taste F5 auf die Seite der Werte, die er verändert über ajax angezeigt werden. Ich denke, das wird einigen browser-chaching Problem, wenn die css/html-Teil wird nicht vollständig geladen. Es lädt nur nach drücken von f5
$.ajax({ url: url, method: 'post', processData: false, contentType: false, cache: false, dataType: 'json', data: formData, })
Denken Sie, dass dies könnte werden durch ajax? es wäre toll, wenn dies der Fall war.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie
pageshow
Ereignis behandeln die situation, wenn der browser navigiert zu Ihrer Seite durch die Geschichte traversal:Beachten Sie, dass HTTP-cache zu tun. Sie müssen, setzen Sie die richtigen cache-related HTTP-Header auf server-cache nur die Ressourcen, müssen zwischengespeichert werden. Sie können auch gezwungen reload instuct browser zu ignorieren, HTTP-cache:
window.location.reload( true )
. Aber ich glaube nicht, dass es die beste Lösung.For more information check:
window.addEventListener( "unload", function() {} );
aber es ist nichts zu tun, der zurück-button funktioniert nach wie vor, keinerlei Veränderung ;(window.addEventListener( "unload", function() {} );
funktioniert nicht. Ist es vollständig?pageshow
Lösung.$(document).ready( function() { /* code here */ });
What do you mean exactly by refresh the page on going back with browser button?
Bitte, Lesen Sie meine aktuelle ursprünglichen Frage, ich habe es detailliert beschrieben in 5. Schritte.Es ist schon eine Weile her, dass dies gepostet wurde, aber ich fand eine elegantere Lösung, wenn Sie nicht benötigen, um Unterstützung von alten Browsern.
Können Sie einen Scheck mit
Dokumentation einschließlich browser-Unterstützung ist hier: https://developer.mozilla.org/en-US/docs/Web/API/Performance/navigation
So, um zu sehen, wenn die Seite geladen wurde aus der Geschichte mit zurück können Sie tun
Den
2
zeigt die Seite aufgerufen wurde, die durch das navigieren in der Geschichte. Andere Möglichkeiten sind-0:
Die Seite zugegriffen wurde, indem Sie folgenden link, einem Lesezeichen, einem Formular oder ein script, oder durch Eingabe der URL in der Adressleiste.1:
Die Seite zugegriffen wurde, indem Sie auf den Reload-button oder über die Lage.reload () - Methode.255:
Andere WeiseDiese sind hier beschrieben: https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigation
Einfach jquery verwenden :
Den oben funktioniert 100%, wenn Sie den vorwärts-oder zurück-Schaltfläche geklickt wurde, die mit ajax als gut.
wenn es nicht klappt, muss es eine Fehlkonfiguration in einem anderen Teil des Skripts.
Zum Beispiel könnte es nicht neu laden, wenn etwas wie eine aus dem Beispiel im vorherigen post verwendet wird
window.history.pushState('', null, './');
also, wenn Sie wollen, verwenden Sie
history.pushState();
stellen Sie sicher, dass Sie es richtig verwenden.
Vorschlag in den meisten Fällen werden Sie brauchen nur:
Kein Fenster.Geschichte... und stellen Sie sicher, url definiert ist.
Hoffe, das hilft..
Sollten Sie einen versteckten Eingang als refresh-Anzeige, mit einem Wert von "no":
Nun mit jQuery, können Sie überprüfen Sie seinen Wert:
Wenn Sie klicken Sie auf die Schaltfläche zurück klicken, werden die Werte in hidden-fields behalten den gleichen Wert, wie wenn Sie ursprünglich Links der Seite.
Also das erste mal, laden Sie die Seite, die input-Wert wäre "Nein". Wenn Sie zu der Seite zurückkehren, werden Sie "ja" und Ihr JavaScript-code wird eine Regenerierung auslösen.
Seit
performance.navigation
ist jetzt veraltet, können Sie versuchen, diese:Laden ist einfach. Sie sollten:
Und Aufdeckung zurück ist :
alert('test');
stattlocation.reload(true);
aber immer noch nichts. Ich habe versucht firefox und chrome aber nichts. Ich habe versucht, innen-Dokument bereit, außerhalb , aber nichts funktioniert. wenn ich versuche ein einfaches alert() oder beliebigen jquery-code tht funktioniert. Ich habe eine Menge von jquery-code auf meiner Seite und es funktioniert.Fand ich die beste Antwort und es funktioniert perfekt für mich
nutzen Sie einfach dieses einfache script in deinem link
oder die Schaltfläche click-Ereignis
wenn Sie dieses aktualisieren Sie Ihre Seite und gehen Sie dann zur nächsten Seite
wenn Sie zurück kehren, es wird mit der letzten Aktualisierung Staat.
Ich habe es in einer CAS-login und gibt mir, was ich will.
Hoffe es hilft .......
Der beste Weg ist, um timeout mithilfe von jquery.
In einer Millisekunde wird die Funktion auslösen, einmal, damit Ihre Benutzer vielleicht nicht einmal bemerken, auslösen.
Ich verwende es kein problem.