我使用以下代码在使用按钮或下拉菜单后将窗口置于相同的滚动位置。其中一个按钮(#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中运行。任何人,请。
答案 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>