如何记住滚动位置并回滚

Imr*_*qvi 6 javascript browser scroll html2canvas

我正在使用 html2canvas 库,当我调用 html2canvas.Parse() 时,页面滚动到顶部。

我想如果我能记住调用 html2canvas.Parse() 之前的位置,那么我就可以回到原来的滚动位置。

  1. 获取浏览器滚动的当前位置(特别是垂直)?
  2. 滚动回我之前存储的位置?

ham*_*ish 11

我选择了现代 html5 浏览器的方式来处理这个问题。它将最后的滚动位置存储在客户端 Web 浏览器本身中,然后在重新加载页面时将设置从浏览器读取回最后的滚动位置。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

<script type="text/javascript">
$(document).ready(function () {

    if (localStorage.getItem("my_app_name_here-quote-scroll") != null) {
        $(window).scrollTop(localStorage.getItem("my_app_name_here-quote-scroll"));
    }

    $(window).on("scroll", function() {
        localStorage.setItem("my_app_name_here-quote-scroll", $(window).scrollTop());
    });

  });
</script>
Run Code Online (Sandbox Code Playgroud)


bil*_*oah 2

  1. 将滚动位置保存到变量
  2. 做一点事
  3. 向后滚动

我在下面的示例中使用 jQuery 来使事情变得简单,但是您可以轻松地在 vanilla js 中完成相同的操作。

var scrollPos;

$('.button').on('click', function() {
  
  // save scroll position to a variable
  scrollPos = $(window).scrollTop();
  
  // do something
  $('html, body').animate({
    scrollTop: $("#cats").offset().top
  }, 500);
  
  // scroll back
  setTimeout(
    function() {
      $('html, body').animate({
        scrollTop: scrollPos
      }, 500);
    }, 1000);
});
Run Code Online (Sandbox Code Playgroud)
.button {
  position: fixed;
  font-size: 12px;
  margin: 10px;
}

#rainbow {
  height: 2000px;
  background: -webkit-linear-gradient(red, orange, yellow, green, cyan, blue, violet);
  background: -o-linear-gradient(red, orange, yellow, green, cyan, blue, violet);
  background: -moz-linear-gradient(red, orange, yellow, green, cyan, blue, violet);
  background: linear-gradient(red, orange, yellow, green, cyan, blue, violet);
}

#cats {
  width: 100%;
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
<input class="button" value="Scroll down a bit then click here for 1 second of cats!" type="button">
<div id="rainbow"></div>
<img id="cats" title="By Alvesgaspar [CC BY-SA 3.0 
 (https://creativecommons.org/licenses/by-sa/3.0
)], via Wikimedia Commons" width="1024" alt="Cat poster 1" src="https://upload.wikimedia.org/wikipedia/commons/thumb/0/0b/Cat_poster_1.jpg/1024px-Cat_poster_1.jpg">
Run Code Online (Sandbox Code Playgroud)