document.documentElement与document.body分析

document.documentelement代替document.body来获取我们想要的结果 将代码中的document.body替换为document.documentelement,再来看看各浏览器下的实际结果:
ii测试结果表明,ie系列浏览器对document.documentelement属性的解释是正确的,其它标准浏览器将offsetheight解释成 了scrollheight。火狐和netscape更是把这两个属性调换了过来。不过总的来说各属性都可以有个相应的解释,不会像 document.body一样只有可怜的两种
这是domdocument对象里的body子节点和整个节点树的根节点root。

dom把层次中的每一个对象都称之为节点,就是一个层次结构,你可以理解为一个树形结构,就像我们的目录一样,一个根目录,根目录下有子目录,子目录下还有子目录。

以html超文本标记语言为例:整个文档的一个根就是<html>,在dom中可以使用document.documentelement来访问它,它就是整个节点树的根节点。而body是子节点,要访问到body标签,在脚本中应该写:document.body。

它们的区别

document.documentelement仅仅只是一个标准的dom对象
document.body是对body元素的一个引用,等同于document.getelementsbytagname('body')[0]

w3c 的标准
<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> ,
而我调试时都没有加这一行. 这行代码就是定义网页是否遵循w3c标准的,自然js和css教程以及html都得遵循其标准,而在标准里没有这两个对象. 调用这两个对象需要用document.documentelement  来代替.

后来经过一些测试还发现了 document.body 对象必须在 body 内容加载完才有值,而 document.documentelement 对象则在访问时就存在了. 当遵循标准时如果要访问body对象时 document.body window.body就会失效,相反 document.documentelement 就会失效. 不知道其它对象在标准下还会不会有另一套,一直找不到个象样的网页特效手册

时间: 2024-10-29 20:10:03

document.documentElement与document.body分析的相关文章

用document.documentElement取代document.body的原因分析_javascript技巧

IE6在页面内容超出窗口大小时将宽度属性scrollWidth.clientWidth.offsetWidth都解释为内容实际宽度. 上次的测试说明了document.body属性并不会给我们返回预期的结果,比如我们用document.body.clientHeight原本想取得"页面可见区域高度",可实际上返回的是"页面实际内容高度". 那我们怎么办呢?难道加上了文档DTD类型之后就再也不能取到"可见区域高度"和"内容实际宽度&quo

再谈 document.documentElement 与 document.body 的 scrollWidth、offsetWidth、clientWidth

(scrollHeight.offsetHeight.clientHeight 同样可按本文去理解.) 这是一个很复杂的问题,让我们想像一下: document.documentElement.scrollWidth document.documentElement.offsetWidth document.documentElement.clientWidth document.body.scrollWidth document.body.offsetWidth document.body.c

js中document.documentElement和document.body用法区别

网页中获取滚动条卷去部分的高度,可以通过 document.body.scrollTop 来获取,比如使div跟着滚动条滚动:  代码如下 复制代码 <div id="div" style="width:100px;height:100px;background:#ccc;position:absolute;"></div> window.onscroll = function () {     var div = document.getE

document.documentElement和document.body区别介绍_javascript技巧

区别: body是DOM对象里的body子节点,即 <body> 标签: documentElement 是整个节点树的根节点root,即<html> 标签: 没使用DTD情况即怪异模式BackCompat下: 复制代码 代码如下: document.documentElement.clientHeight=0document.body.clientHeight=618 使用DTD情况即标准模式CSS1Compat下: 复制代码 代码如下: document.documentEle

由document.body和document.documentElement想到的_javascript技巧

对于document.compatMode,很多朋友可能都根我一样很少接触,知道他的存在却不清楚他的用途.其实这个对于我们开发兼容性的web页面还是很有帮助,我们都知道,盒模型的渲染在 Standards Mode和Quirks Mode是有很大差别的,在不声明Doctype的情况下,浏览器默认是Quirks Mode.所以为兼容性考虑,我们可能需要获取当前的文档渲染方式. document.compatMode正好派上用场,它有两种可能的返回值:BackCompat和CSS1Compat,对其

document.documentElement的一些使用技巧_javascript技巧

复制代码 代码如下: --documentElement 属性可返回文档的根节点. <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <script type="text/javascript"> function shownode() { var ohtml = document.documentElement; //al

document.documentElement &amp;amp;&amp;amp; document.documentElement.scrollTop_javascript技巧

在标准的浏览器下,需要注意的东西,例如双击自动滚动 var diffY; if (document.documentElement && document.documentElement.scrollTop)     diffY = document.documentElement.scrollTop; else if (document.body)     diffY = document.body.scrollTop else     {/*Netscape stuff*/}

document.createElement()和document.createDocumentFragment()的比较

我在上一篇文章js中DOM操作复习总结中提到了:document.createElement()和document.createDocumentFragment(),虽说我们平时可以把两者混着用,但是还是得明白两者之间的区别: 一.在DOM操作中document.createElement()每次创建的都是一个DOM节点,所以每次都要执行把节点添加到document.body(或其后的节点)中的操作,这样对于一个小程序运行时没有问题的,但如果他调用了十次甚至一百次一千次document.body

document.open() 与 document.write()的区别_javascript技巧

document.open()  打开一个新的空白文档,在IE下,open有两个默认参数,相当于document.open("text/html",'""),第二个参数只有一个值可选:replace,如果启用了该值,则新建的文档会覆盖当前页面的文档(相当于清空了原文档里的所有元素,且不能后退即,浏览器的后退按钮不可用): 看一个例子: <SCRIPT LANGUAGE="JavaScript"> <!-- function te