javascript – Sammy.js在历史记录中回滚时的缓存和滚动位置

前端之家收集整理的这篇文章主要介绍了javascript – Sammy.js在历史记录中回滚时的缓存和滚动位置前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我不知道有人还在使用Sammy.js,但是我发现它完全适合我的轻量级路由和模板库的需要.如果有其他想法,请让我知道.

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

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

提前致谢.

解决方法

您可以使用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

猜你在找的JavaScript相关文章