2013-05-12 56 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