2016-05-06 60 views
9

我不知道是否有人仍在使用Sammy.js,但我發現它非常適合我對輕量級路由和模板庫的需求。如果有人有其他想法,請告訴我。Sammy.js緩存和回滾歷史記錄時的位置

我的問題是,當我有一個長頁面,我向下滾動時,點擊此頁面上的鏈接並返回,整個頁面被重新加載(在Sammy中,GET路徑被調用),並跳轉到頁面頂部。

我的問題是:有沒有辦法讓Sammy在回顧歷史時緩存頁面並保持滾動位置?

在此先感謝。

+1

作爲一種解決辦法,我建議,http://stackoverflow.com/a/5651372/2346893與http://stackoverflow.com/a/10115269/2346893相結合,您還可以添加如果您不想手動執行該操作,則在滾動瀏覽頁面時將當前可見元素的id添加到散列歷史記錄中。 –

+0

您可以使用localstorage將scrolltop和url作爲參數傳遞給每個訪問頁面。 –

回答

5

您可以使用localStorage作爲另一種方式將url-scrolltop作爲一對存儲。通過這種方式,瀏覽器會記住指定網址的srolltop位置。

var scroltop,url; 
$(window).scroll(function() { 
    scroltop = $(this).scrollTop(); 
    url = window.location.href; 
    clearTimeout($.data(this, 'scrollTimer')); 
    $.data(this, 'scrollTimer', setTimeout(function() { 
    localStorage.setItem(url,scroltop); 
    }, 250)); 
}); 
if(localStorage.getItem(window.location.href)) { 
    url = window.location.href; 
    scroltop = localStorage.getItem(url); 
    $(window).scrollTop(scroltop); 
} 

JSbin example