在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,我想知道为什么会这样做,如果有办法解决它?
答案 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);
}