document.documentElement.clientHeight和document.body.clientHeight之间的区别

时间:2011-11-08 14:44:51

标签: javascript

document.documentElement.clientHeightdocument.body.clientHeight之间有什么区别?所有Web浏览器的返回值是否一致,或者每个浏览器的评估结果是否一致?

在我的特定情况下,documentElement似乎比body元素的高度更小,这没有意义。为什么会这样?

3 个答案:

答案 0 :(得分:14)

document.documentElement属性为您提供html元素,而document.body属性为您提供body元素。

window.innerHeight属性返回窗口的高度而不是内容的高度。

不同的浏览器会为这些元素的大小提供不同的值,并且相同的浏览器可能会给您不同的值,具体取决于页面是以Quirks模式还是标准合规模式呈现,以及您使用的是HTML还是XHTML。 html元素可以表示窗口,也可以表示整个页面。 body元素可以与html元素的大小相同,也可以是页面中内容的大小。

htmlbody元素是"魔法"与其他元素不同的元素。在XHTML中,它们被更改为使它们更像真实元素,但仍然有一些东西是"魔术"。例如,body元素没有自己的背景,而htmlbody共享相同的背景,它总是覆盖整个窗口,即使body元素没有。

答案 1 :(得分:9)

我想出了这个问题!它与HTML标记之前的DOCTYPE声明有关。没有doctype,documentElement和body实际上是切换的。还要感谢其他人的帮助:D

答案 2 :(得分:3)

让我们问一个好老的萤火虫(为了懒惰,我就是在SO上做的),因为这两个对象之间存在差异:

>>> document.documentElement
<html>
>>> document.body
<body class="question-page">

因此,document.documentElement指向顶级<html>元素,而document.body指向<body>元素。