2011-08-16 22 views
10

È possibile modificare l'URL visualizzato nella barra degli indirizzi del browser senza che il browser passi a quella pagina? Ad esempio, dopo aver aggiornato il contenuto di una pagina tramite una chiamata AJAX?Aggiorna l'URL del browser senza ricaricare la pagina

La mia comprensione è che questo non è possibile, motivo per cui siti come Twitter e Facebook aggiornano il tag hash sulle chiamate ajax.

Questo è fino a oggi, quando sono andato su http://8tracks.com/ e ho iniziato a giocare con il filtro sul lato destro ... girando diversi generi su e giù, ho notato che anche se stava facendo chiamate ajax per aggiornare il contenuto sulla pagina, l'URL veniva aggiornato dinamicamente.

Qualcuno sa come lo fanno?

(a parte, Attualmente sto usando Chrome, ma quando sono tornato e ho guardato di nuovo con IE9, ho notato che l'URL non è stato aggiornato .. Questo è l'forse un Chrome unica cosa?)

risposta

22

Questo è possibile in browser moderni utilizzando l'API HTML5 Storia:

history.pushState(null, null, '/some-path') 

Vedi https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history#The_pushState%28%29.c2.a0method

Questo funziona in Firefox, Chrome, Opera, Safari (non IE).

+0

+1 per questa risposta. L'API della cronologia HTML5 è l'unico/corretto modo per farlo. Per un articolo in background puoi consultare https://github.com/balupton/history.js/wiki/Intelligent-State-Handling che spiega l'evoluzione degli hash in hashbang all'API della cronologia HTML5. – balupton

Problemi correlati