代码之家  ›  专栏  ›  技术社区  ›  urini

使用Ajax时如何保持浏览器历史记录的同步?

  •  10
  • urini  · 技术社区  · 16 年前

    我正在用ASP编写一个简单的相册应用程序。NET Ajax。
    该应用程序使用异步Ajax调用预加载相册中的下一张照片,而无需更改浏览器中的URL。

    问题是,当用户点击 < 返回 点击浏览器中的按钮,应用程序不会返回上一张照片,而是导航到应用程序的主页。

    有没有一种方法可以欺骗浏览器将每个Ajax调用添加到浏览历史记录中?

    8 回复  |  直到 14 年前
        1
  •  15
  •   Community CDub    8 年前

    更新:现在有HTML5历史API(pushState,popState),它反对HTML4 hashchange 功能。 History.js 提供跨浏览器兼容性和 optional hashchange HTML4浏览器的回退。

    这个问题的答案或多或少与我对这些问题的答案相同:

    总之,您一定会想看看这两个项目,它们解释了整个hashchange过程并将ajax添加到其中:

    • jQuery History (使用哈希来管理页面状态,并绑定到更改以更新页面)。

    • jQuery Ajaxy (jQuery History的ajax扩展,允许完整的ajax网站,同时完全不引人注目且可优雅地降解)。

        2
  •  4
  •   Espo    15 年前
        3
  •  3
  •   James B    16 年前

    许多网站使用隐藏的iframe来实现这一点,只需使用新的URL刷新iframe,即可将其添加到浏览历史记录中。然后,你所要做的就是处理你的应用程序如何对这些“后退按钮”事件做出反应——你要么需要检测iframe的状态/位置,要么使用该URL刷新页面。

        4
  •  1
  •   Nikita Koksharov    13 年前

    你可以使用simple&轻量的 PathJS lib。

    使用示例:

    Path.map("#/page1").to(function(){
        ...
    });
    
    Path.map("#/page2").to(function(){
        ...
    });
    
    Path.root("#/mainpage");
    Path.listen();
    
        5
  •  0
  •   user1228user1228    16 年前

    3.5 SP1更新支持ASP中的浏览器历史记录和后退按钮。NET ajax。

        6
  •  0
  •   Darren Kopp    16 年前

    对于所有关于后退按钮的解决方案,没有一个是“自动”的。对于每一个,你都必须做一些工作来保持页面的状态。所以不,没有办法“欺骗”浏览器,但有一些很棒的库可以帮助你使用后退按钮。

        7
  •  0
  •   entropia    16 年前

    信息 Ajax导航是一个 regular feature 即将推出的IE8。

        8
  •  0
  •   Igor Alexandrov    12 年前

    如果你正在使用Rails,那么一定要试试Wiselinks https://github.com/igor-alexandrov/wiselinks 。这是一把用于浏览器状态管理的瑞士军刀。以下是一些细节: http://igor-alexandrov.github.io/blog/2013/07/11/the-way-to-wiselinks-1-dot-0/ .

    推荐文章