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

tol*_*oli 6 javascript ajax html5 dom reload

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

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

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

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

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

任何想法将不胜感激.谢谢.

T.J*_*der 1

这就是HTML5 定义的新历史记录 API 。您可以在此处查看另一个演示。你说得很对,它就是pushState这样做的,但它不仅仅适用于查询字符串(正如该页面所示,它使用像/history/first和 一样的根相对 URL /history/second)。