在Google Chrome中,document.body.scrollTop始终返回0。
我试试
if (window.pageYOffset > 0) {
st = window.pageYOffset;
} else if (document.documentElement.scrollTop > 0) {
st = document.documentElement.scrollTop;
} else {
st = document.body.scrollTop;
}
但不行。 document.body.scrollTop正在使用firefox。
即使在Chrome控制台中,当我在控制台中使用此代码时它也无法正常工作。
enter code here
$('html, body').stop().animate({
scrollTop: 50
}, 500);
答案 0 :(得分:10)
我也打了这个。根据此问题,此行为在Chrome 60和Chrome 61之间发生了变化:
https://bugs.chromium.org/p/chromium/issues/detail?id=766938
据我所知,新行为实际上更符合标准。评论#5对该问题的建议修正是:
如果您正在寻找一种可互操作的查询scrollTop的方法,您可以使用window.scrollY属性或执行document.documentElement.scrollTop ||之类的操作。的document.body.scrollTop
答案 1 :(得分:0)
我正在使用React, 我发现根元素#root具有css规则位置: 如果删除规则,scrollTop可能会返回正确的值。
getScrollTop = () => {
let scrollTop = 0;
if (document.documentElement && document.documentElement.scrollTop) {
scrollTop = document.documentElement.scrollTop;
} else if (document.body) {
scrollTop = document.body.scrollTop;
}
return scrollTop;
}