Il codice woudn't causare un popstate, come il comando pushState dice ciò che la pagina si è in ADESSO.
window.onpopstate = function(event) { alert(event.state.a) }
history.pushState({a: 1});
history.pushState({a: 2});
history.back()
Il codice sopra funzionerà.
Heres il violino: http://jsfiddle.net/WNurW/8/
Come si può vedere dalla foto qui sopra:
(1) Qui immesso nella pagina, o il violino, poi si desidera pushState, che sarà aggiungi un nuovo link alla cronologia.
(2) Quando si preme lo stato, si aggiungerà un altro clic indietro alla cronologia, ma si sposterà anche la posizione corrente nella "cronologia" fino al nuovo stato. Quindi, tornando indietro, non ti darà lo stato della storia che pensi di aver ottenuto, ma darà quello precedente.
(3) È necessario passare a una "nuova" pagina o premere un altro stato di cronologia, per poter tornare allo stato creato nel passaggio (2).
fonte
2013-07-23 07:38:38
Grande spiegazione, amo lo schema! –
L'altro punto che vorrei fare è che event.state passato a popstate non è lo stato che abbiamo appena fatto scattare, ma lo stato appena installato. –