JQuery:返回上一页时如何返回完全相同的滚动位置

时间:2015-09-14 20:40:21

标签: javascript jquery

我有很长的项目列表,当我点击每个项目并返回主列表时,滚动位置丢失了。

如何使用jQuery返回相同的滚动位置?有没有简单的方法呢?

$(document).ready(function() {

  $('.update-button').click(function (){
    sessionStorage.scrollPos = $(window).scrollTop();
    console.log(sessionStorage.scrollPos);
  });
});

var init = function () {
    //get scroll position in session storage
    $(window).scrollTop(sessionStorage.scrollPos || 0)
};
window.onload = init;

以上是我的代码的样子。我试图记录位置,sessionStorage.scrollPos为0.我很确定我将页面滚动到某个地方。

非常感谢帮助。

6 个答案:

答案 0 :(得分:6)

以这种方式尝试:

$(window).scroll(function () {
    //set scroll position in session storage
    sessionStorage.scrollPos = $(window).scrollTop();
});
var init = function () {
    //get scroll position in session storage
    $(window).scrollTop(sessionStorage.scrollPos || 0)
};
window.onload = init;
  

您需要在sessionStorage(或任何存储)中存储滚动位置的值,并在页面加载时再次使用它。

答案 1 :(得分:2)

只要修改@Rayon,如果它没有工作,请回答。

$("body").on("scroll", function () {
    //set scroll position in session storage
    sessionStorage.scrollPos = $(window).scrollTop();
});
var init = function () {
    //get scroll position in session storage
    $("body").scrollTop(sessionStorage.scrollPos || 0)
};
window.onload = init;

您可以将$("body")替换为HTML中最顶层的元素。我正在使用framework7移动应用程序,我需要使用$(".page-content")。它对我有用。

答案 2 :(得分:0)

没有简单的解决方案,但在重定向发生的点击事件中,使用

获取当前滚动位置
var scroll = $(window).scrollTop();

然后将scroll变量的值存储到localstorage中(如果localstorage不可用,则为cookie)。

然后在页面加载时从本地存储中查找滚动位置(如果可用),如果可以,则移动到该位置。

答案 3 :(得分:0)

试试这个。

<button onclick="goBack()">Go Back</button>


function goBack() {
  window.history.go(-1);
}

答案 4 :(得分:0)

此项适用于readmore文章或隐藏文章,用于获得点击readmore的当前位置高度。

#note:您需要切换按钮Readmore并隐藏

let readhide = document.querySelectorAll('.read-hide');
let readmore = document.querySelectorAll('.read-more');
readmore.forEach((more,key) => {
    let height, moreHeight;
    window.addEventListener('scroll', function(event){
        height = Math.floor(event.target.scrollingElement.scrollTop);
    });
    
    more.addEventListener('click', function(){
        moreHeight = height;
    });
    
    readhide[key].addEventListener('click', function(){
        window.scrollTo(0, moreHeight);
    });
});

答案 5 :(得分:0)

    <a href="javascript:window.history.back()">Return Text </a>