【问题标题】:scrollTop() returns 0 if there is a doctype [duplicate]如果存在文档类型,则 scrollTop() 返回 0 [重复]
【发布时间】:2015-08-06 14:03:24
【问题描述】:

在 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,我想知道它为什么这样做,是否有办法解决它?

【问题讨论】:

  • 你试过谷歌吗?
  • @Huangism 哦,天哪...我用谷歌搜索了它,但从未发现 document.body.scrollTop 已贬值。我想我需要提高我的谷歌技能:D

标签: javascript html


【解决方案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);
}

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-18
  • 2016-07-13
  • 2019-05-23
  • 2011-10-19
相关资源
最近更新 更多