Javascript 使用Ajax时如何保持浏览器历史同步?
我正在使用ASP.NET Ajax编写一个简单的相册应用程序。Javascript 使用Ajax时如何保持浏览器历史同步?,javascript,asp.net,ajax,hashchange,Javascript,Asp.net,Ajax,Hashchange,我正在使用ASP.NET Ajax编写一个简单的相册应用程序。 该应用程序使用异步Ajax调用预加载相册中的下一张照片,而不更改浏览器中的URL 问题在于,当用户单击浏览器中的返回按钮时,应用程序不会返回到上一张照片,而是导航到应用程序的主页 有没有办法欺骗浏览器将每个Ajax调用添加到浏览历史记录中?MSDN有一篇文章介绍了许多网站利用隐藏的iframe来实现这一点,只需使用新的URL刷新iframe,即可将其添加到浏览历史记录中。然后,您所要做的就是处理应用程序对这些“后退按钮”事件的反应-
该应用程序使用异步Ajax调用预加载相册中的下一张照片,而不更改浏览器中的URL 问题在于,当用户单击浏览器中的返回按钮时,应用程序不会返回到上一张照片,而是导航到应用程序的主页
有没有办法欺骗浏览器将每个Ajax调用添加到浏览历史记录中?MSDN有一篇文章介绍了许多网站利用隐藏的iframe来实现这一点,只需使用新的URL刷新iframe,即可将其添加到浏览历史记录中。然后,您所要做的就是处理应用程序对这些“后退按钮”事件的反应-您需要检测iframe的状态/位置,或者使用该URL刷新页面。3.5 SP1更新现在支持ASP.NET ajax中的浏览器历史记录和后退按钮。有关后退按钮的所有解决方案,它们都不是“自动的”。对于每一个页面,您都必须做一些工作来保持页面的状态。因此,没有办法“欺骗”浏览器,但是有一些很棒的库可以帮助你点击后退按钮。信息:Ajax导航是即将到来的IE8的一个重要功能。更新:现在有了HTML5历史API(pushState,popState),它不支持HTML4
hashchange
功能。为HTML4浏览器提供跨浏览器兼容性和hashchange
回退功能。
这个问题的答案与我对这些问题的回答大致相同:
- (使用哈希来管理页面状态,并绑定到更改以更新页面)
- (jqueryhistory的ajax扩展,允许完整的ajax网站,同时完全不引人注目且可正常降解)
Path.map("#/page1").to(function(){
...
});
Path.map("#/page2").to(function(){
...
});
Path.root("#/mainpage");
Path.listen();
如果您使用的是Rails,那么一定要尝试Wiselinks。这是一把用于浏览器状态管理的瑞士军刀。以下是一些详细信息:。@Keltex我现在已将链接替换为指向MSDN的链接。谢谢:)如果我理解正确,iframe实际上会将非ajax请求发送到服务器。这将是服务器不必要的负载。对于低流量的站点可能没问题,但如果请求发生,这绝对不是一个好的解决方案。