【问题标题】:How to avoid ajax reload when you click the back button单击后退按钮时如何避免ajax重新加载
【发布时间】:2012-01-31 23:47:03
【问题描述】:

我有一个使用 Ajax 生成结果列表的页面。然后有一个链接可以单击到另一个详细信息页面。当我在详细信息页面时,单击后退按钮。结果页面列表将再次重新加载。无论如何要停止ajax重新加载并缓存结果。无论如何也可以缓存位置。

感谢您的帮助

【问题讨论】:

    标签: javascript html ajax


    【解决方案1】:

    我收藏的一些关于 AJAX/后退按钮管理的项目

    https://github.com/browserstate/history.js

    https://github.com/tkyk/jquery-history-plugin

    关于你的第二个问题,如果你的浏览器支持本地数据库,你可以在那里缓存结果。以下项目提供跨浏览器的统一 API。

    https://github.com/marcuswestin/store.js

    https://github.com/alexmng/sticky

    位置也可以存储在localDB中。

    【讨论】:

      【解决方案2】:

      您可以通过更改window.location.hash 属性来保存状态。哈希是 URL 中唯一可以更改且不会强制重新加载 URL 的部分。

      window.location.hash = 'some-id'; 将转换为您的 URL,如下所示:index.html#some-id

      然后,您可以在页面加载时获取哈希并将 UI 设置为正确的状态:

      if (window.location.hash == 'some-id') {
          //setup UI for `some-id` identifier
      }
      

      【讨论】:

      • 我认为问题不在于重新加载 url,而在于当用户返回该页面时是否可以缓存和恢复页面的 javascript 状态 - 这需要浏览器支持,所以: 浏览器支持吗?
      • 是的,对我来说,在我的答案上加上通知是个好主意。这不是一个直接的答案,而是一个可能被忽视的选项。我在想,有了这个,你可以将信息存储在 cookie(或 localStorage/sessionStorage)中,并根据 URL 检索信息。
      【解决方案3】:

      https://developer.mozilla.org/en/DOM/Storage

      使用某种时间戳存储您的数据。检查您是否存储了数据,并且它没有比您希望的旧。如果它较旧,请获取新数据。如果不使用存储的数据。

      (不是 Mozilla 特有的)

      http://caniuse.com/#search=local%20storage

      【讨论】:

        【解决方案4】:

        您可以使用新的 HTML5 LocalStorage 系统来构建缓存。这是一个链接:http://playground.html5rocks.com/#localstorage

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-10-07
          • 1970-01-01
          • 2011-10-22
          • 1970-01-01
          • 2012-11-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多