项目中大量使用异步请求,用户控件,页面元素也是动态生成的,导致浏览器的后退,刷新功能有问题,怎么弄呢?急.......
目前通用的做法(腾讯/人人/谷歌等)是将ajax请求放在#后面。比如初始页面地址是:
http://www.mysite.com/main
用户点击页面某处,发起了ajax请求(比如查看一篇博客)
http://www.mysite.com/main#/blog/123
ajax实际请求的是/blog/123(查看id为123的博客),由于地址栏发生了变化,因此浏览器的前进后退按钮能正常工作。又由于地址栏变化的是#之后的部分,因此不会影响其他地方。jquery好像自带一些支持的,你自己也可以写一个,不难。
浏览器记录了当前的URL ,但是当我后退的时候,由于页面都是异步请求,而且参数都是在JS中保存,所以数据不知道能不能回去,这个是核心问题.如果只是静态页面就很好弄,关键是有大量的数据.
@彭满意: 我说了啊,把数据放在#后面啊。你看看qq空间或者人人网就知道了。
很多成熟的mvc框架都提供router的功能,贴一个backbone的http://backbonejs.org/#Router
这个是做什么用的呢?
@彭满意: 用来解决你说的问题的,做浏览器端的路由,高级浏览器用pushstate,低级浏览器用hash,当然也可以都用hash