Nel mio caso sto usando jQuery .load()
per aggiornare DIV in una SPA (singolo pagina [web] app).
Essendo nuovo di lavorare con $(window).on('hashchange', ..)
listener di eventi, questo si è rivelato impegnativo e ha preso un po 'di incidere su. Grazie alla lettura di molte risposte e alla ricerca di diverse varianti, finalmente abbiamo capito come farlo funzionare nel modo seguente. Per quanto posso dire, sembra molto stabile finora.
In sintesi, la variabile globalCurrentHash
deve essere impostata ogni volta che si carica una vista.
Poi, quando $(window).on('hashchange', ..)
listener di eventi viene eseguito, esso controlla il seguente:
- Se
location.hash
ha lo stesso valore, significa Andando avanti
- Se
location.hash
ha valore diverso, significa Going Back
Realizzo utilizzando global var s non è la soluzione più elegante, ma fare cose con OO in JS mi sembra complicato finora. Proposte di miglioramento/affinamento certamente apprezzate
impostare:
- Definire una var globale:
var globalCurrentHash = null;
Quando si chiama .load()
per aggiornare il DIV, aggiornare il var globale così:
function loadMenuSelection(hrefVal) {
$('#layout_main').load(nextView);
globalCurrentHash = hrefVal;
}
A pagina Installazione semplice e rapida l'ascoltatore a controllare la var globale per vedere se viene premuto il pulsante Indietro:
$(document).ready(function(){
$(window).on('hashchange', function(){
console.log('location.hash: ' + location.hash);
console.log('globalCurrentHash: ' + globalCurrentHash);
if (location.hash == globalCurrentHash) {
console.log('Going fwd');
}
else {
console.log('Going Back');
loadMenuSelection(location.hash);
}
});
});
Stai cercando l'API di cronologia HTML5. – SLaks
possibile duplicato di [rilevare il pulsante Indietro fare clic sul browser] (http://stackoverflow.com/questions/6359327/detect-back-button-click-in-browser) –