【问题标题】:Change URL without reloading [duplicate]在不重新加载的情况下更改 URL [重复]
【发布时间】:2014-01-10 15:18:20
【问题描述】:

我有时会在一些网站上看到,例如 facebook 或来自 google 的 Play Store,通过单击链接会更改 url(不使用 #blah),但 wohle 网站不会重新加载。我可以使用后退/前进,所以我认为它不可能是 javascript。

谁能告诉我如何在网站上实现它?谢谢

【问题讨论】:

    标签: javascript html


    【解决方案1】:

    对于ie8等不支持htmll5的浏览器,可以使用库https://github.com/browserstate/history.js/模拟html5 pushstate方法。

    【讨论】:

      【解决方案2】:

      它使用 pushState,它是使用 javascript 和 HTML5 与 pushState 兼容的浏览器完成的。这是一些文档:https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Manipulating_the_browser_history

      引用这些文档:

      假设http://mozilla.org/foo.html 执行以下JavaScript:

      var stateObj = { foo: "bar" };
      history.pushState(stateObj, "page 2", "bar.html");
      

      这将导致 URL 栏显示 http://mozilla.org/bar.html,但不会导致浏览器加载 bar.html 甚至检查 bar.html 是否存在。

      这样可以改变url,使用javascript渲染新页面。我通过使用 Backbone.js 来做到这一点,但还有其他工具可以做同样的事情。它与那些带有# 的 URL 基本上是相同的技术,除了它们摆脱了哈希。 Backbone.js 默认使用#,但可以配置为使 URL 看起来正常。

      这是SO question about how to do this using Backbone

      【讨论】:

      • 大声笑同样该死的答案.. +1
      【解决方案3】:

      实现此目的的另一种方法是使用AngularJS。正如上面cmets所说,这将使用AJAX获取新数据显示,然后使用javascript更改页面内容,所有这些都不需要加载新的URL。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-10-04
        • 2013-07-07
        • 1970-01-01
        • 2012-08-09
        • 2013-06-21
        • 2020-12-29
        • 2017-04-17
        相关资源
        最近更新 更多