2013-05-12 91 views
0

我有一个长页面,通过scrollTop()导航。当popstate被触发时刷新一次页面?

因为scrollTop()不能正确地与浏览器的后退按钮一起工作(浏览器忽略它),所以我想在每个popstate上尝试刷新浏览器,然后它将起作用,并且用户滚动位置将是其假定位置成为。

问题是我的代码导致无限刷新。

$(window).bind('popstate', function(event) { 
     //var path = window.location.pathname; 
     //var filename = path.match(/.*\/([^/]+)\.([^?]+)/i)[1]; 
     //var pos = "#" + filename; 
     //$(document).scrollTop(pos); 
     location.reload(); 
    }); 

我该如何修复它只刷新一次?我试过one(),但它是一样的。

回答

-1

有许多jQuery和纯JS插件的浏览器历史,这将做你想做的。
我不认为刷新页面会为您启用浏览器历史记录。

jQuery的烧烤
http://benalman.com/projects/jquery-bbq-plugin/
演示:
http://benalman.com/code/projects/jquery-bbq/examples/fragment-basic/#chicken.html

历史JS
https://github.com/browserstate/history.js/

+0

我使用历史API,问题是出在滚动,而不是一般的历史执行情况。浏览器在向后/向前导航时控制滚动位置。阿贾克斯的东西,我也有工作得很好。 – user1721135 2013-05-12 10:05:33

+0

如果我能让浏览器在popstate上只刷新一次,它会起作用。所有的插件都不工作,因为滚动,如果它只是ajax,那么是的,他们会工作。 – user1721135 2013-05-12 10:25:33