JavaScript - bfcache/pageshow-event - Veranstaltung.beharrte immer auf false gesetzt?

In einem standard-Java /SpringMVC /JSP /jQuery, web-app, die ich versuche zu erkennen, eine "Zurück" (oder Geschichte.go(-1)) - Ereignis, um die Aktualisierung (AJAX) Zusammenfassung Komponente/panel-Inhalte, wenn ich wieder auf eine Seite (wo wir uns ändern können die backend-Daten, angezeigt durch das summary-Komponente).

Habe ich versucht, das folgende in JavaScript (folgenden einige Beiträge auf StackExchange re, wie Sie diese erreichen):

<script type="text/javascript">
$(document).ready(function() {
    window.onpageshow = function(event) {
        console.log("Event:");
        console.dir(event);
        if (event.persisted) {
            alert("non-jQuery - back to page - loaded from bfcache");
        } else {
            alert("non-jQuery - loaded page from server");
        }
    };
    $(window).on("pageshow", function(event){
        console.log("Event:");
        console.dir(event);
        if (event.originalEvent.persisted) {
            alert("jquery - back to page - loaded from bfcache");
        } else {
            alert("jquery - loaded page from server");
        }
    });
});
</script>

Ich bin mit OpenSUSE Linux und haben versucht, dies mit FireFox und Chrome (aktuelle Versionen), aber zu jeder Zeit der Veranstaltung persisted Attribut false (ich kann das sehen in der JavaScript-Konsole und durch die Warnungen, die pop-up aus dem obigen code). Durch jedes mal, ich meine, unabhängig davon, ob es geladen wurde vom server angezeigt oder wieder über den Back-button (oder ein 'Zurück' - link).

Meine intention war es, ein AJAX-Aufruf Neuladen der Zusammenfassung Komponente/panel mit den zu aktualisierenden Daten vom server, wenn die Seite wurde, welche über den Back-button oder history.go(-1) nennen.

Ich habe auch versucht die Einstellung eine unload-handler (das macht nichts) zu verhindern, dass die Seite nicht in die bfcache aber es scheint immer noch zu zeigen, dass ein bf-Cache-version und die event.persisted (oder event.originalEvent.persisted)false.

Ist diese Eigenschaft verwaltet das richtig unter Linux? Mache ich etwas dumm in meinem code? Jede Hilfe oder Ideen würde sehr geschätzt, danke!

Ich glaube nicht, das hat nichts mit Linux zu tun. Ich bin mit in es auf einem Mac mit OS 10.9 Mavericks mit sowohl Safari 7 und Firefox 26. Ich habe versucht, jede Technik, die ich finden kann, einschließlich den server senden von cache-control-Header (Cache-Control: no-cache, must-revalidate, max-age=0). Der Browser eigentlich nie die Seite neu laden (über Wireshark überprüft), und event.beibehalten ist immer falsch.

InformationsquelleAutor Eoin | 2013-07-02

Schreibe einen Kommentar