2011-08-16 119 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

相关问题