Google Chrome document.body.scrollTop始终返回0

时间:2017-05-01 09:58:08

标签: javascript jquery google-chrome scroll chromium

在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);

2 个答案:

答案 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;
    }