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

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

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

如果我可以在页面重新加载之前捕捉当前的滚动位置(在一个隐藏的input中),那么我可以在重新加载后重新设置它。

您正在查找document.documentElement.scrollTop属性。

目前接受的答案不正确 – 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(当你在它的时候animation)!

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

使用document.documentElement.scrollTop或jQuery的$(window).scrollTop()时,Mac和iOS上的Google Chrome总是返回0

但是,它适用于:

window.pageXOffset为水平位置

垂直位置的window.pageYOffset

我去了HTML5的本地存储解决scheme…所有我的链接调用一个函数,它改变之前设置window.location:

 localStorage.topper = document.body.scrollTop; 

每个页面都有这个在body的onLoad:

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

另外,你可能想看看jQuery.ScrollTo插件