如何在使用Ajax时保持浏览器历史记录同步?

时间:2008-08-27 10:53:23

标签: javascript asp.net ajax hashchange

我正在使用ASP.NET Ajax编写一个简单的相册应用程序 该应用程序使用异步Ajax调用来预加载相册中的下一张照片,而不更改浏览器中的URL。

问题在于,当用户点击浏览器中的后退按钮时,该应用不会返回到上一张照片,而是导航到应用程序的主页。 / p>

有没有办法欺骗浏览器将每个Ajax调用添加到浏览历史记录中?

8 个答案:

答案 0 :(得分:15)

更新:现在有HTML5历史记录API(pushState,popState),它弃用了HTML4 hashchange功能。 History.js为HTML4浏览器提供跨浏览器兼容性和optional hashchange备用。

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

总之,你肯定想看看这两个解释整个hashchange过程并在混合中添加ajax的项目:

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

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

答案 1 :(得分:4)

MSDN有一篇关于Managing Browser History in ASP.NET AJAX

的文章

答案 2 :(得分:3)

许多网站都使用隐藏的iframe来执行此操作,只需使用新网址刷新iframe,然后将其添加到浏览历史记录中。然后,您所要做的就是处理应用程序对这些“后退按钮”事件的反应 - 您需要检测iframe的状态/位置,或者使用该URL刷新页面。

答案 3 :(得分:1)

你可以使用简单&轻量级PathJS lib。

用法示例:

Path.map("#/page1").to(function(){
    ...
});

Path.map("#/page2").to(function(){
    ...
});

Path.root("#/mainpage");
Path.listen();

答案 4 :(得分:0)

3.5 SP1更新现在支持ASP.NET ajax中的浏览器历史记录和后退按钮。

答案 5 :(得分:0)

关于后退按钮的所有解决方案,它们都不是“自动”。对于每一个,您将不得不做一些工作来保持页面的状态。所以不,没有办法“欺骗”浏览器,但有一些很棒的库可以帮助你使用后退按钮。

答案 6 :(得分:0)

信息:Ajax导航是即将推出的IE8的regular feature

答案 7 :(得分:0)

如果您使用的是Rails,那么一定要尝试Wiselinks https://github.com/igor-alexandrov/wiselinks。它是用于浏览器状态管理的瑞士军刀。以下是一些详细信息:http://igor-alexandrov.github.io/blog/2013/07/11/the-way-to-wiselinks-1-dot-0/