JavaScript - bfcache/pageshow événement - événement.persistait toujours la valeur false?

Dans un standard de Java /spring mvc /JSP /jQuery web-app, je vais essayer de détecter un "Retour" (ou de l'histoire.go(-1)) de l'événement, afin de rafraîchir (AJAX) un résumé de la composante/panneau de contenu quand je retourner à une page (où l'on peut modifier les données back-end qui est affiché par le résumé de la composante).

J'ai essayé les en JavaScript (à la suite de certains postes sur StackExchange re comment y parvenir):

<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>

Je suis sous OpenSUSE Linux et ont essayé avec FireFox et Chrome (dernière version), mais à chaque fois l'événement persisted de définir l'attribut false (je peux le voir dans la console JavaScript et par les alertes pop-up à partir du code ci-dessus). Par tous les temps, je veux dire, peu importe si il a été chargé à partir du serveur ou montré de nouveau via le bouton Retour (ou un lien "Retour").

Mon intention était de faire un appel AJAX pour recharger le résumé de la composante/panneau avec la mise à jour des données à partir du serveur si la page a été montrant via le bouton Retour ou history.go(-1) appel.

J'ai aussi essayé la fixation d'un déchargement gestionnaire (qui ne fait rien) pour prévenir la page à partir de la mettre dans le bfcache mais il semble toujours être montrant un bf-version mise en cache et la event.persisted (ou event.originalEvent.persisted) est mis à false.

Est-ce bien gérés correctement sur Linux? Suis-je en train de faire quelque chose de stupide dans mon code? Toute aide ou des idées serait très apprécié, merci!

  • Je ne pense pas que cela n'a rien à voir avec Linux. Je suis en cours d'exécution sur un Mac exécutant OS 10.9 Mavericks avec deux safaris 7 et Firefox 26. J'ai essayé toutes les techniques que je peux trouver, y compris le serveur envoyez-tête cache-control (Cache-Control: no-cache, must-revalidate, max-age=0). Les navigateurs jamais fait de recharger la page (vérifié via Wireshark), et de l'événement.persisté est toujours faux.
InformationsquelleAutor Eoin | 2013-07-02