【问题标题】:How does Facebook change the URL in the browser's address bar without page reload or use of # or?Facebook 如何在不重新加载页面或使用 # 或的情况下更改浏览器地址栏中的 URL?
【发布时间】:2011-10-11 06:17:18
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

标签: javascript ajax html dom reload


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      这就是 HTML5 定义的新 history API。你可以看到另一个演示here。你说得对,是 pushState 做到了,但它只适用于查询字符串(如该页面所示,它使用像 /history/first/history/second 这样的有根相对 URL )。

      【讨论】:

        猜你喜欢
        • 2011-08-02
        • 2012-11-05
        • 1970-01-01
        • 2015-02-14
        • 1970-01-01
        • 2011-10-27
        • 1970-01-01
        • 2014-01-15
        • 1970-01-01
        相关资源
        最近更新 更多