搜尋

首頁  >  問答  >  主體

javascript - ajax列表 点击链接后不能回到当前页面

背景
列表页面的翻页和查询都是ajax写的,每个列表有10列,每列上都有操作,列表的翻页和查询都是ajax做的,所有的查询条件都保存在js中。
操作的链接是a链接

问题
当用户查询了好多数据之后,并且翻页了,现在点击编辑或者其他的,再点击浏览器的后退按钮,就不能回到原来的页面

补充
主要针对ie8的用户

迷茫迷茫2894 天前634

全部回覆(3)我來回復

  • 伊谢尔伦

    伊谢尔伦2017-04-10 12:45:49

    这是AJAX应用中会遇到的一个大问题,解决方法大家已经总结好了。

    1. 不考虑IE这货,使用 HTML5 history API(赞);
    2. 考虑IE这货,为URL加上#hash,然后实现一个onhashchange事件,很多网盘的目录浏览是这样解决的(推荐); Backbone.js的router支持history API 并且在不支持history API 的浏览器下,可以使用hash的解决方案。另外使用jQuery的话推荐jQuery的一个onhashchange插件 jQuery hashchange
    3. 使用iframe实现历史记录,浏览器url并不会改变(不大推荐)。

    具体使用请Google之:https://www.google.com/search?hl=zh-C...

    回覆
    0
  • 高洛峰

    高洛峰2017-04-10 12:45:49

    ajax是异步的,不会在你当前窗口的历史中,所以浏览器后退肯定不行,一般来说必须跳转。
    不过还有一个办法,pjaxhttp://www.welefen.com/pjax-for-ajax-...
    像github就是用的这个方法,可以改变url但不跳转也不全部刷新页面

    回覆
    0
  • 天蓬老师

    天蓬老师2017-04-10 12:45:49

    这个问题,应该是ajax库,将每次ajax操作,作为浏览器历史添加进了浏览器。所以浏览器无法回到上一个页面。

    这是有用的,因为很多情况下,ajax是不刷新操作,但是单一页面的不同状态,都不能通过url表示,比如,用户打开了一个ajax邮件系统的某一封邮件,这时他收藏了或者copy了当前地址,期望下一次也能通过这个地址打开同样的邮件。但是如何做呢?不好的ajax系统,总是会回到最初的状态。所以ajax库会利用URL中的fragment id,来实现。同理的,现在主流浏览器,也会自动的将fragment id的变化添加的浏览器历史中。即用浏览器的回退和前进来操作。这在早期IE中不支持,所以很多ajax库还专门写了代码。

    URL的格式一般为:scheme://domain:port/path?query_string#fragment_id
    最后一部分。

    回覆
    0
  • 取消回覆