大只彬

个人博客

欢迎来到我的个人博客~( ̄▽ ̄~)(~ ̄▽ ̄)~


document.body与document.documentElement的区别


什么是document.body?

返回当前文档中的<body>元素或者元素.

document.body 是包含当前页面内容的元素,对于拥有 <body> 元素的文档来说,返回的是 <body> 元素,对于一个拥有 <frameset> 元素的文档来说,返回的是最外层的 <frameset> 元素. 该属性是 可写 的,且为该属性赋的值必须是一个<body>元素.

什么是document.documentElement?

是一个会返回文档对象(document)的根元素的只读属性(如HTML文档的 <html> 元素)。

所有主要浏览器都支持 documentElement 属性,可以使用 document.documentElement 来获取根元素。

document.body与document.documentElement实际应用区别:

获取 scrollTop 的差异:

  • 在 chrome 下获取 scrollTop 只能通过 document.body.scrollTop (不管DTD是否存在)。

  • 在 Firefox 下,若页面存在 DTD,则使用 document.documentElement.scrollTop 获取滚动条距离,反之则采用 document.body.scrollTop 获取。

  • 在 Safari 下,有自己获取 scrollTop 的函数 window.pageYOffset

  • 在 IE 下,若页面存在 DTD,则使用 document.documentElement.scrollTop 获取滚动条距离,反之则采用 document.body.scrollTopdocument.documentElement.scrollTop都可以获取。

总而言之,有 DTD 时用document.documentElement,无则用document.body

兼容写法:

var scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;

参考资料: document.documentElement document.body

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦