【问题标题】:AJAX and back buttonAJAX 和返回按钮
【发布时间】:2011-08-24 11:43:10
【问题描述】:

如何使用 AJAX 保存历史记录,就像 github 或 google+ 一样。我使用 jQuery,但我不想使用 # 和 #! 之类的 hack!技巧,因为如果我这样做了,我将需要改变我的整个项目并使我的生活变得更加复杂?

【问题讨论】:

    标签: javascript ajax history


    【解决方案1】:

    Github 和 Google+ 正在使用 history.pushState

    您可以像这样更改当前网址:

    history.pushState(null, null, '/the-new-url');
    

    Firefox、Chrome、Opera、Safari 支持此功能;不是 IE。

    https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history#The_pushState%28%29.c2.a0method

    【讨论】:

      【解决方案2】:

      对于 AJAX 和历史,基本上有两种选择。

      1. # 方法(这不是 hack 顺便说一句)。由于您不想要那个,因此您只剩下选项 2。

      2. 使用 PushState。这就是 Facebook、GitHub 和其他一些人使用的。但并非所有浏览器都支持它,如果您想要完全的跨浏览器兼容性,您将不得不使用可以降级到选项 1 的系统。

      实现这一点的一个非常简单的方法是 Backbone.js 路由器类。

      【讨论】:

      • # 方法在很大程度上是一种 hack。片段标识符的重点是链接到文档的特定部分,而不是告诉 JavaScript 从哪些 URL 获取数据以通过 Ajax 填充页面的某些部分。
      • 嗯,是的,如果我们真的很挑剔和严格,那是最初的预期用途,但由于它被广泛支持和使用,我更愿意称之为“巧妙地使用机制”而不是我认为听起来太消极的“黑客”。
      • 我认为 'hack' 确实是 not sound negative enough。在这种情况下,该术语的意思是“将某物用于其预期目的以外的目的”,这正好符合这一点
      【解决方案3】:

      a simple jQuery hashchange plugin 旨在解决这个特定问题。

      我没用过;我不知道它是如何跟踪 url 历史的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-05
        • 2012-04-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多