如何获取和设置当前的网页滚动位置?
如何获取并设置当前的网页滚动位置?
我有一个很长的表单,需要根据用户的操作/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插件