如果有doctype,scrollTop()返回0

时间:2015-08-06 14:03:24

标签: javascript html

在Firefox 39.0和IE 11中,如果HTML5文档的文档类型为<!doctype html>,则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>

滚动时,上述内容始终在控制台中记录0,但如果您删除doctype,则会按预期返回滚动主体顶部的距离。
请注意,它可以在Chrome中使用或不使用doctype。

我宁愿不删除doctype,我想知道为什么会这样做,如果有办法解决它?

1 个答案:

答案 0 :(得分:1)

使用此:document.documentElement.scrollTop.

document.body.scrollTop已被弃用。

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

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