Questo è causato da back-forward cache. Si suppone di salvare lo stato completo della pagina quando l'utente si allontana. Quando l'utente torna indietro con il pulsante Indietro, la pagina può essere caricata dalla cache molto rapidamente. Questo è diverso dalla cache normale che memorizza solo il codice HTML.
Quando la pagina viene caricata per l'evento bfcache onload
, non verrà attivato. Invece è possibile verificare la proprietà persisted
dell'evento onpageshow
. È impostato su false al caricamento iniziale della pagina. Quando la pagina viene caricata da bfcache è impostata su true.
window.onpageshow = function(event) {
if (event.persisted) {
alert("From back/forward cache.");
}
};
Per qualche motivo, jQuery non ha questa proprietà nell'evento. Puoi trovarlo dall'evento originale però.
$(window).bind("pageshow", function(event) {
if (event.originalEvent.persisted) {
alert("From back/forward cache.");
}
});
La soluzione rapida a questi problemi è di ricaricare la pagina quando si preme il pulsante Indietro. Ciò tuttavia annulla qualsiasi effetto positivo che la cache di back/forward darebbe.
window.onpageshow = function(event) {
if (event.persisted) {
window.location.reload()
}
};
Come sidenote, è possibile vedere molte pagine che offrono utilizzando vuota onunload
gestore come soluzione. Questo non ha funzionato da iOS5.
$(window).bind("unload", function() { });
fonte
2012-09-29 11:04:26
Si consiglia di provare ad aggiungere tutti gli URL dei collegamenti con "?" Se non è ancora presente. ad es .: 'href =" next.html "' diventa 'href =" next.html? "'. Ciò darebbe un suggerimento al browser web che il contenuto della pagina è dinamico e andare a quella pagina di nuovo dovrebbe ricaricare nuovamente la pagina dal server. Questo dovrebbe essere applicato anche agli script esterni. ad es .: 'src =" mylib.js "' diventa 'src =" mylib.js? "'. – Jay