代码之家  ›  专栏  ›  技术社区  ›  xyz

如何获取和设置当前网页滚动位置?

  •  95
  • xyz  · 技术社区  · 15 年前

    如何获取和设置当前网页滚动位置?

    我有一个长表单,需要根据用户操作/输入进行刷新。当这种情况发生时,页面会重置到最顶端,这对用户来说很烦人,因为他们必须向下滚动到他们所处的位置。

    如果我能在页面重新加载之前捕获当前滚动位置(在隐藏的输入中),那么我就可以在页面重新加载之后将其设置回原来的位置。

    4 回复  |  直到 15 年前
        1
  •  78
  •   SLaks    15 年前

    你在找 document.documentElement.scrollTop 属性。

        2
  •  114
  •   tobek    11 年前

    当前接受的答案不正确- document.documentElement.scrollTop 在chrome上始终返回0。这是因为WebKit使用 body 用于跟踪滚动,而firefox和ie使用 html .

    要获取当前位置,您需要:

    document.documentElement.scrollTop || document.body.scrollTop
    

    您可以在页面下方将当前位置设置为1000px,如下所示:

    document.documentElement.scrollTop = document.body.scrollTop = 1000;
    

    或者,使用jquery(当你在jquery的时候动画!):

    $("html, body").animate({ scrollTop: "1000px" });
    
        3
  •  22
  •   gyo Gabriele Petrioli    8 年前

    浏览器公开当前窗口滚动坐标的方式有些不一致。 谷歌浏览器 雨衣 网间网操作系统 似乎总是回来 0 使用时 document.documentElement.scrollTop 或jquery的 $(window).scrollTop() .

    但是,它的工作原理是:

    // horizontal scrolling amount
    window.pageXOffset
    
    // vertical scrolling amount
    window.pageYOffset
    
        4
  •  5
  •   AXE Labs    13 年前

    我使用了HTML5本地存储解决方案…我的所有链接都会调用一个函数,该函数在更改window.location之前设置此函数:

    localStorage.topper = document.body.scrollTop;
    

    每一页的正文中都有:

      if(localStorage.topper > 0){ 
        window.scrollTo(0,localStorage.topper);
      }