Facebook如何在没有页面重新加载或使用#或?的情况下更改浏览器地址栏中的URL

时间:2011-07-22 17:47:54

标签: javascript ajax html5 dom reload

几个月前,我在vkontakte.ru(俄罗斯FB)上看到了一项新功能: 在用户页面之间进行时,不会发生浏览器重新加载。而是,新页面被预加载,然后显示。页面上的音乐播放器(它固定在页脚顶部)不间断地播放。

但是,浏览器地址栏中的网址会更改,而不会通过哈希标记或查询字符串进行更改。

所以,我的页面是vk.com/myPage ...我点击了一个朋友,他的页面预加载,然后显示,此时浏览器地址栏中的URL变为vk.com/myfriendJoe,并且没有浏览器重新加载

请注意,它仅适用于最新版本的Safari和Chrome等浏览器,对于像Firefox 3.6这样的其他版本,它实现了使用主题标签和查询字符串的回退。

我做了一些研究并找到window.history.pushState,但它似乎只适用于查询字符串。

任何想法都将不胜感激。谢谢。

3 个答案:

答案 0 :(得分:1)

这是HTML5定义的新history API。您可以看到另一个演示here。你是pushState这样做是对的,但它只使用查询字符串(正如该页面所示,它使用了根目录的相对网址,如/history/first/history/second)。

答案 1 :(得分:1)

如果您使用的是符合HTML5标准的现代浏览器,则可以使用history.pushState() API。

更多信息:https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history

答案 2 :(得分:-2)

网站是否在幕后使用ajax调用来重新填充页面的某些部分?这是不改变网址的一种方式。