Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 返回历史时Sammy.js缓存和滚动位置_Javascript_Jquery_Sammy.js - Fatal编程技术网

Javascript 返回历史时Sammy.js缓存和滚动位置

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

我不知道是否有人还在使用Sammy.js,但我发现它非常适合我对轻量级路由和模板库的需求。如果有人有其他想法,请告诉我

我的问题是,当我有一个很长的页面时,我向下滚动,单击该页面上的链接并返回,整个页面被重新加载(在Sammy中,调用GET路径),它会跳到页面顶部

我的问题是:有没有办法让Sammy缓存页面并在返回历史记录时保持滚动位置


提前感谢。

您可以使用本地存储作为将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作为参数传递到每个访问过的页面中。