回答一下:为什么scrollTop总是0?

测试页面如下:




    
    test
    


    


Chrome 浏览器下,无论你怎么滚动页面,控制台里输出的就是 0 ;
有人说这是个兼容性问题,也对.
测试代码不变, Chrome , IE 都是 0 ,而 Edge 就能正确的输出.
按浏览器兼容来解决,方法很简单:
document.body.scrollTop 无效的时候,
换用 document.documentElement.scrollTop 就可以了.

var top=document.body.scrollTop || document.documentElement.scrollTop;//兼容写法

这个问题到这里并没有结束,
有人可能遇到这样的情况:

同样的js代码,同样的 Chrome 浏览器,为什么别人能用 document.body.scrollTop ,偏偏我就用不了???

这是个有趣的问题,我研究了一下.
发现区别在于 HTML 代码的DTD声明上:


如果不做DTD声明, Chrome就可以支持 document.body.scrollTop 了.
很怪吧?


但这里要强调一下:

虽然,HTML 5 不基于 SGML,因此不需要对 DTD 进行引用,
但是,依然需要 doctype 来规范浏览器的行为!

一个具有正确文档类型(doctype)的 HTML5 文档:

 


    
        Title of the document
    

    
        The content of the document......
    


你可能感兴趣的:(回答一下:为什么scrollTop总是0?)