我有什么选择更改URL上的查询字符串以及更新浏览器历史记录?

时间:2010-08-28 16:21:57

标签: ajax query-string hashchange browser-state

有什么办法可以更改网址或将更多历史记录添加到“后退按钮”而无需刷新整个页面?

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

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

4 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

这个问题的答案或多或少与我对这些问题的答案相同:

总之,您可能希望查看的两个项目解释整个hashchange过程并将其与ajax一起使用:

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

  • jQuery Ajaxy(jQuery历史记录的ajax扩展,允许完整的ajax网站,同时完全不引人注目且可以优雅地降级)。

答案 3 :(得分:0)

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

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