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

标签 javascript ajax html dom reload

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

但是,浏览器地址栏中的 url 发生变化,而不是通过哈希标记或查询字符串。

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

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

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

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

最佳答案

这是新的 history API由 HTML5 定义。可以看另一个demo here .你说得很对,是 pushState 做的,但它只处理查询字符串(正如该页面所展示的那样,它使用根相对 URL,如 /history/first/history/second)。

关于javascript - Facebook 如何在不重新加载页面或不使用# 或的情况下更改浏览器地址栏中的 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6794006/

相关文章:

javascript - 仅为特定的 html 元素启用刷新

javascript - Node Express 和 csurf - 403(禁止)无效的 csrf token

javascript - 拉伸(stretch)背景渐变高度为 : 100% on html

javascript - 如何通过 jQuery 将自定义哈希添加到我的 Ajax 表单提交中?

javascript - Phonegap 中的多屏支持和适用于 android、iphone、windows blackberry 的图像大小

javascript - 停止闪烁文本javascript

javascript - 如何在 js 数组中搜索?

javascript - 鼠标悬停时发送 ajax 请求

html - 背景图片不动

jquery - 很难用 jQuery 选择一个 div