我正在使用 ASP.NET Ajax 编写一个简单的相册应用程序。
该应用程序使用异步 Ajax 调用来预加载相册中的下一张照片,而无需更改浏览器中的 URL。
问题在于,当用户单击浏览器中的后退按钮时,应用程序不会返回到上一张照片,而是导航到应用程序的主页。
有没有办法诱使浏览器将每个 Ajax 调用添加到浏览历史记录中?
我正在使用 ASP.NET Ajax 编写一个简单的相册应用程序。
该应用程序使用异步 Ajax 调用来预加载相册中的下一张照片,而无需更改浏览器中的 URL。
问题在于,当用户单击浏览器中的后退按钮时,应用程序不会返回到上一张照片,而是导航到应用程序的主页。
有没有办法诱使浏览器将每个 Ajax 调用添加到浏览历史记录中?
更新:现在有 HTML5 History API(pushState、popState),它弃用了 HTML4hashchange
功能。History.js提供跨浏览器兼容性和HTML4 浏览器的可选 hashchange
回退。
这个问题的答案或多或少与我对这些问题的答案相同:
总之,您肯定想查看这两个项目,它们解释了整个 hashchange 过程并将 ajax 添加到组合中:
jQuery History(使用哈希来管理页面状态并绑定到更改以更新页面)。
jQuery Ajaxy(jQuery History 的 ajax 扩展,允许完整的 ajax 网站,同时完全不显眼且可优雅地降级)。
MSDN 有一篇关于在 ASP.NET AJAX 中管理浏览器历史记录的文章
许多网站使用隐藏的 iframe 来执行此操作,只需使用新 URL 刷新 iframe,将其添加到浏览历史记录中。然后您所要做的就是处理您的应用程序如何对那些“后退按钮”事件做出react——您要么需要检测 iframe 的状态/位置,要么使用该 URL 刷新页面。
您可以使用简单且轻量级的PathJS库。
用法示例:
Path.map("#/page1").to(function(){
...
});
Path.map("#/page2").to(function(){
...
});
Path.root("#/mainpage");
Path.listen();
3.5 SP1 更新现在支持 ASP.NET ajax 中的浏览器历史记录和后退按钮。