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

时间:2010-11-04 12:56:29

标签: javascript html

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

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

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

5 个答案:

答案 0 :(得分:116)

目前接受的答案不正确 - 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(在你使用时动画它!):

$("html, body").animate({ scrollTop: "1000px" });

答案 1 :(得分:80)

您正在寻找document.documentElement.scrollTop财产。

答案 2 :(得分:22)

浏览器如何显示当前窗口滚动坐标存在一些不一致之处。使用0或jQuery document.documentElement.scrollTop时, Mac 上的 Google Chrome iOS 似乎始终返回$(window).scrollTop()

但是,它与以下内容保持一致:

// horizontal scrolling amount
window.pageXOffset

// vertical scrolling amount
window.pageYOffset

答案 3 :(得分:5)

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

localStorage.topper = document.body.scrollTop;

并且每个页面在正文的onLoad中都有这个:

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

答案 4 :(得分:0)

这会给你从顶部滚动的像素值

document.documentElement.scrollTop