我正在使用ASP.NET Ajax编写一个简单的相册应用程序 该应用程序使用异步Ajax调用来预加载相册中的下一张照片,而不更改浏览器中的URL。
问题在于,当用户点击浏览器中的后退按钮时,该应用不会返回到上一张照片,而是导航到应用程序的主页。 / p>
有没有办法欺骗浏览器将每个Ajax调用添加到浏览历史记录中?
答案 0 :(得分:15)
更新:现在有HTML5历史记录API(pushState,popState),它弃用了HTML4 hashchange
功能。 History.js为HTML4浏览器提供跨浏览器兼容性和optional hashchange
备用。
这个问题的答案或多或少与我对这些问题的答案相同:
总之,你肯定想看看这两个解释整个hashchange过程并在混合中添加ajax的项目:
jQuery History(使用哈希来管理您的网页状态并绑定到更改以更新您的网页)。
jQuery Ajaxy(jQuery历史记录的ajax扩展,允许完整的ajax网站,同时完全不引人注目且可以优雅地降级)。
答案 1 :(得分:4)
答案 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/。