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

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

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

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

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

    有没有办法诱使浏览器将每个Ajax调用添加到浏览历史记录中?

    8 回复  |  直到 14 年前
        1
  •  15
  •   Community Reversed Engineer    7 年前

    更新:现在有一个HTML5历史API(pushState,popState)不支持HTML4 hashchange 功能。 History.js 提供跨浏览器兼容性和 optional 哈希变化 HTML4浏览器的回退。

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

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

    • jQuery History (使用散列管理页面状态并绑定到更改以更新页面)。

    • jQuery Ajaxy (jQuery历史的ajax扩展,允许完整的ajax网站,同时完全不引人注目和优雅地降级)。

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

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

        4
  •  1
  •   Nikita Koksharov    12 年前

    您可以使用simple&lightweight PathJS 解放军。

    用法示例:

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

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

        6
  •  0
  •   Darren Kopp    16 年前

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

        7
  •  0
  •   entropia    16 年前

    信息 :Ajax导航是 regular feature 即将到来的IE8。

        8
  •  0
  •   Igor Alexandrov    11 年前

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