首页 > 博客 > 正文

document.documentElement&document.body

document.documentElement对于任何非空HTML文档,始终是一个<html>元素。

document.body是包含文档内容的元素。在具有<body>内容的文档中,返回<body>元素,在框架集文档中,这返回最外面的<frameset>元素(不再推荐使用此功能)

概括:document.body返回html dom中的body节点 —<body>
document.documentElement返回html dom中的root节点—<html>

两者获取值时也会有差别,例如:scrollTop滚动条在Y轴上的滚动距离

一、页面存在文档类型声明<!DOCTYPE html>
  • chrome通过document.documentElement.scrollTop获取scrollTop,document.body.scrollTop为0(好像五十几之前的版本只能通过document.body来获取,且文档存在不存在都不影响)
  • FF、IE 也通过document.documentElement来获取 scrollTop,document.document.body.scrollTop获取的为0
二、页面不存在DTD
  • chrome通过document.body.scrollTop获取,document.documentElement.scrollTop为0
  • IE两者均可获得且值相等
  • FF 同理chrome

兼容解决方案
var scrollTop = document.documentElement.scrollTop || document.body.scrollTop

Back