Ajax分页 - 启用后退按钮

时间:2009-07-12 04:22:33

标签: jquery asp.net-mvc ajax

  

可能重复:
  How to: Back button support “Ajax”

我有一个ASP.NET MVC实现,我通过jQuery获取部分视图,例如分页和过滤。问题是我通过这样做打破了浏览器的后退按钮。如何恢复后退按钮行为(使用pound重写URL而不刷新?不确定它是如何工作的,以及如何在触发后退按钮时重新获取数据。)

感谢您的帮助!

3 个答案:

答案 0 :(得分:4)

如您所知,javascript分页会杀死后退按钮。但它也会杀死链接到给定页面的能力。为避免页面重新加载,但维护后退按钮,您需要在URL中使用#。然后,您将能够使用后退按钮(并直接链接到页面),但是您需要在页面加载时解析URL,将页面移动到正确的页面。

编辑:

获取网址:

var baseURL = location.href.slice(0, location.href.indexOf('#'));

然后使用新资源添加到网址:

location.href = baseURL + '#page2';
//you'll probably want to figure out the page number programatically

但不要忘记在加载时找到合适的资源:

$(goToResource);
function goToResource() {
    var hashURL = location.href.slice(location.href.indexOf('#'));
    //you AJAX code to load the resource goes here
}

当然,你可能会找到一个插件来为你完成这一切。

答案 1 :(得分:4)

尝试使用jquery.history插件。它可以很好地完成你想要的。

答案 2 :(得分:1)

请查看添加浏览器历史记录支持at this page

文章没有提到这对开箱即用的IE不起作用。您需要在您的页面中包含一个iframe才能使其与IE一起使用。

<iframe id="__historyFrame" style="display:none;" ></iframe>

我只在IE7和Firefox中查看过。鉴于IE没有记录的问题,我不相信它会在各种浏览器中发挥作用