重新加载时将窗口移动到相同的滚动位置

时间:2016-03-18 12:51:31

标签: javascript jquery

我使用以下代码在使用按钮或下拉菜单后将窗口置于相同的滚动位置。其中一个按钮(#english)的示例在下面的代码中给出。

EDITED

f(localStorage.getItem("scroll"))  
    {
        window.scrollTo(0, parseInt(localStorage.getItem("scroll")));

    }



        $("#english").on("click",function()
        {
             localStorage.setItem("scroll", document.body.scrollTop);
        });

window.localStorage.clear();

这适用于Safari,但不适用于Firefox。

似乎无法让它在Firefox中运行。任何人,请。

2 个答案:

答案 0 :(得分:4)

根据this document.body.scrollTop已弃用firefox尝试document.documentElement.scrollTop。您可能必须插入一些条件逻辑以在Safari中使用document.body.scrollTop并在Firefox中使用document.documentElement.scrollTop

将您的点击处理程序更改为

$("#english").on("click",function(){
    var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
    localStorage.setItem("scroll", scrollTop);
});

ALSO

如果localStorage中不存在滚动

localStorage.clear(); 
typeof localStorage.getItem("scroll"); // "object"

如果存在滚动,则

localStorage.setItem("scroll", 1000);
typeof localStorage.getItem("scroll"); // "string"

如果滚动为0

localStorage.setItem("scroll", 0);
typeof localStorage.getItem("scroll"); // "string"

因此,除非“scroll”明确设置为undefined,否则typeof localStorage.getItem('scroll') === 'undefined';将永远不会返回true。

如果滚动不存在,则其值为空

localStorage.clear(); 
localStorage.getItem("scroll"); // null

null === true //false

所以

if(localStorage.getItem("scroll"))  
        {
            window.scrollTo(0, parseInt(localStorage.getItem("scroll")));

        }
如果滚动存在(并且是一定数量的话),

将滚动,如果不滚动则不滚动。你在寻找其他一些行为吗?

答案 1 :(得分:0)

这有效:

<script>

/*makes a new page jump to same scroll position as the scroll position when the link is activated*/ 

if(localStorage.getItem('scroll'))  
        {
            window.scrollTo(0, parseInt(localStorage.getItem("scroll")));

        }

$("#englishflag").on("click",function()
{
     localStorage.setItem("scroll", window.pageYOffset);
});


 window.localStorage.clear();

  /*END*/ 
</script>