2011-08-16 162 views
10

是否可以更改瀏覽器地址欄中顯示的URL,而無需瀏覽器轉到該頁面?例如,在通過AJAX調用更新頁面內容之後?在不重新加載頁面的情況下更新瀏覽器的網址

我的理解是,這是不可能的,這就是爲什麼像twitter和facebook這樣的網站更新ajax調用上的哈希標記。

直到今天,當我繼續http://8tracks.com/並開始玩右手邊的過濾器...打開和關閉不同的流派,我注意到即使它正在進行ajax調用來刷新內容在頁面上,該URL也被動態更新。

有誰知道他們是如何做到這一點的?

(不談,我目前使用的瀏覽器,但是當我回去,並與IE9看了一遍,我注意到URL沒有被更新。是這個也許Chrome的唯一的事?)

回答

22

這有可能在現代瀏覽器使用HTML5歷史API:

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

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

這個工程在火狐,Chrome,歌劇,Safari瀏覽器(不是IE)。

+0

+1了這個答案。 HTML5 History API是正確/唯一的方法。對於背景文章,您可以查看https://github.com/balupton/history.js/wiki/Intelligent-State-Handling,它解釋了散列到hash5到歷史記錄API的演變。 – balupton

相關問題