如何获取和设置当前网页滚动位置?
我有一个需要根据用户操作/输入刷新的长格式。当发生这种情况时,页面会重置到最顶层,这对用户来说很烦人,因为他们必须向下滚动到他们所处的位置。
如果我可以在页面重新加载之前捕获当前滚动位置(在隐藏的输入中),我可以在重新加载后将其设置回来。
答案 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