Javascript 返回历史时Sammy.js缓存和滚动位置
我不知道是否有人还在使用Sammy.js,但我发现它非常适合我对轻量级路由和模板库的需求。如果有人有其他想法,请告诉我 我的问题是,当我有一个很长的页面时,我向下滚动,单击该页面上的链接并返回,整个页面被重新加载(在Sammy中,调用GET路径),它会跳到页面顶部 我的问题是:有没有办法让Sammy缓存页面并在返回历史记录时保持滚动位置Javascript 返回历史时Sammy.js缓存和滚动位置,javascript,jquery,sammy.js,Javascript,Jquery,Sammy.js,我不知道是否有人还在使用Sammy.js,但我发现它非常适合我对轻量级路由和模板库的需求。如果有人有其他想法,请告诉我 我的问题是,当我有一个很长的页面时,我向下滚动,单击该页面上的链接并返回,整个页面被重新加载(在Sammy中,调用GET路径),它会跳到页面顶部 我的问题是:有没有办法让Sammy缓存页面并在返回历史记录时保持滚动位置 提前感谢。您可以使用本地存储作为将url scrolltop成对存储的替代方法。这样,浏览器会记住指定url的srolltop位置 var scroltop,u
提前感谢。您可以使用本地存储作为将url scrolltop成对存储的替代方法。这样,浏览器会记住指定url的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);
}
作为一种解决方法,我建议您在滚动页面时,也可以将当前可见元素的id添加到哈希历史记录中,如果您不想手动添加。您可以使用localstorage将scrolltop和url作为参数传递到每个访问过的页面中。