Javascript 如果存在doctype,scrollTop()返回0

Javascript 如果存在doctype,scrollTop()返回0,javascript,html,Javascript,Html,在Firefox 39.0和IE 11中,如果HTML5文档具有doctype,document.body.scrollTop将始终返回0 例如: <!DOCTYPE html> <!--doctype--> <html> <head> <title>Sample page</title> </head> <body> Aliquip summis doctrina admodum,

在Firefox 39.0和IE 11中,如果HTML5文档具有doctype
document.body.scrollTop
将始终返回
0

例如:

<!DOCTYPE html>
<!--doctype-->
<html>
<head>
    <title>Sample page</title>
</head>

<body>
    Aliquip summis doctrina admodum, pariatur praesentibus non laboris aut an eram...
    <script>
       window.addEventListener("scroll",function(){
          console.log(document.body.scrollTop);
       });
    </script>
</body>
</html>

样本页
这是一篇总结性的文章,是一篇非实验性的论文。。。
addEventListener(“滚动”,函数(){
console.log(document.body.scrollTop);
});
当您滚动时,上面的内容总是在控制台中记录为0,但是如果您删除
doctype
,它会返回与主体顶部滚动的距离。
请注意,它在Chrome中可以使用或不使用doctype


我不想删除doctype,我想知道它为什么这样做,是否有办法解决它?

使用这个:
document.documentElement.scrollTop。

document.body.scrollTop
已弃用

如果需要特定于浏览器,可以

if (navigator.userAgent.toLowerCase().indexOf('firefox') !== -1){
    scrollTo(document.documentElement, y, 200);
}else{
    scrollTo(document.body, y, 200);
}

这是一个Chrome bug:非常感谢:D我被告知使用document.body,我猜他不知道它被贬值了,尽管你试过谷歌吗?@Huangism哦,天哪。。。我在谷歌上搜索了一下,但没发现
document.body.scrollTop
贬值了。我想我需要学习我的谷歌技能:D