【问题标题】:What are my options for changing the querystring on a URL, and updating browser history?更改 URL 上的查询字符串和更新浏览器历史记录有哪些选择?
【发布时间】:2011-04-05 05:22:56
【问题描述】:

有什么方法可以更改 URL 或向“后退按钮”添加更多历史记录,而无需刷新整个页面?

我的应用程序是基于 AJAX 的,我想在历史记录中添加一些“撤消”事件,以便用户可以简单地回击并保留旧值。

今天有什么可能?我听说其中一些可能在 HTML5 中,但尚未检查当前浏览器支持的内容。

【问题讨论】:

    标签: ajax query-string hashchange browser-state


    【解决方案1】:

    可以使用 ASP.NET 的内置脚本管理器来更新浏览器的历史记录。完整的操作方法位于此处:

    http://www.asp.net/aspnet-in-net-35-sp1/videos/introduction-to-aspnet-ajax-history

    【讨论】:

      【解决方案2】:

      这个问题的答案和我对这些问题的答案差不多:

      总之,您可能想看看两个项目,它们解释了整个 hashchange 过程并将其与 ajax 一起使用:

      • jQuery History(使用哈希来管理您的页面状态并绑定到更改以更新您的页面)。

      • jQuery Ajaxy(jQuery History 的 ajax 扩展,允许完整的 ajax 网站同时完全不显眼且可优雅地降解)。

      【讨论】:

        【解决方案3】:

        您可以使用301 redirection。就个人而言,我会在客户端使用 cookie,或者在后端使用会话来存储面包屑。在 URL 中存储状态信息对于 AJAX 应用程序来说是个坏主意,因为人们可能会返回到服务器端未处于正确状态来响应的 url。

        另一种选择是提供您自己的后退按钮,该按钮知道要返回到哪个页面。

        【讨论】:

          【解决方案4】:

          我认为您可以使用window.location.hash 来跟踪页面的#part,在您的情况下,#state1#state2 等等。

          window.location.hash = '#state' + (++ stateN) 设置和 stateN = parseInt(window.location.hash.match(/\d+$/)[0])

          有关如何检测位置哈希更改的更多详细信息,请参阅On - window.location.hash - Change?

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-01-27
            • 2013-04-02
            • 1970-01-01
            • 2014-01-23
            • 2015-11-15
            • 1970-01-01
            • 2021-05-02
            • 1970-01-01
            相关资源
            最近更新 更多