Posso darti la risposta a questo, perché ho affrontato e risolto questo problema.
ci sono alcuni concetti per capire prima qui:
- javascript non può modificare direttamente la cronologia del browser.
- ogni volta che l'URL di base di un iframe nella pagina cambia, la cronologia viene aggiornata. (ma questo ha alcune stranezze con diversi browser).
- l'url ha una parte "hash": ad esempio, nell'URL
http://mail.google.com/mail#inbox
, #inbox
è la parte dell'hash. Lo chiamiamo "hash". quindi http://mail.google.com/mail
sarà il nostro "URL di base".
La cronologia di monitoraggio di GMail viene eseguita principalmente tramite trucchi basati su questo "hash".
Così, un paio di concetti:
- quando l'URL nei cambiamenti barra degli indirizzi, la storia viene aggiornato (l'URL precedente va in storia)
- quando l'URL di base viene cambiato, il la pagina è ricaricata.
- quando la parte di hash dell'URL cambia senza che l'URL di base cambi, la pagina non viene ricaricata.
Così, quando si va http://mail.google.com/mail#inbox
-http://mail.google.com/mail#sent
, la pagina non ottiene rinfrescata.
Ora, se GMail dovesse ricevere una notifica di evento quando l'hash è cambiato, Gmail potrebbe intraprendere azioni basate su tale. Sfortunatamente, non ci sono eventi DOM che possono aiutarci a catturare le azioni della cronologia. Quindi, invece (questa è la parte che mostra come ho superato il problema), eseguiamo un ciclo infinito che controlla le modifiche all'hash. Se osserva una modifica, rileviamo un clic sul pulsante "indietro" o "avanti" del browser.
Nel risolvere ciò, ho creato uno strumento utile: lo URL parser. Può analizzare i parametri GET nell'URL, nonché i parametri codificati nell'Hash. Dai la demo!
Cheers!
A proposito di questo problema in IE: Non mi rendevo conto che questo 'hash' basato soluzione non funziona su IE (scarso sviluppatore Linux vecchio).
Ma per IE, è possibile utilizzare un iframe nascosto e utilizzare la proprietà "url influisce sulla cronologia" per implementare la cronologia. So che questa affermazione manca di dettagli, ma ciò deriva dalla mia mancanza di esperienza con IE.
Cercherò questa soluzione, e follow-up :)
ho trovato una serie di link su internet, che fanno corrette implementazioni di storia utilizzando iframe/posizione hash. Non ho avuto la pazienza di scavare le differenze tra l'interfaccia iframe su vari browser.
Suppongo che preferirei lo jquery plugin. YUI ha anche un manager della storia.
Cheers!
+1 più la gente dovrebbe conoscere il web design applicazione in questo modello! – jrharshath