documentElement

5 篇文章 0 订阅
4 篇文章 0 订阅

今天看js权威指南时看到书上有句代码:document.documentElement.children,一下就懵了: document和documentElement不一样么?但,如果document和documentElement同指的是document,那不对啊,children属性是只有Element对象也有的,document对象上如何能调用??难道documentElement是Document和Element的桥梁,可以把Document转成一个Element?? 唉唉,不懂了。。

查了之后才明白: 原来documentElement和document根本不是一回事,documentElement指的是文档的根节点,该属性是Document类的属性,即HTML和XML中均可用:在HTML中,它指的是html元素,而XML中,则视文档而定,总之是文档的根元素。

唉,真是的,这名起的,叫rootElement多清晰明了。

================================================

在搜索documentElement时,搜出了好多人关于document.documentElement 和document.body 的区别的讲解,主要是针对获取页面滚动高度时的区别,这里也简单说下吧,完善下对于documentElement的学习,简而言之就是:

在怪异模式下,用document.body.scrollTop, 在标准模式下,用document.documentElement.scrollTop.

除了这两种方式外,还有一种方式可以获得页面滚动的高度:window.pageYOffset,

此属性在IE10(IE9-中不支持)、Opera12.16(以前版本支持情况没调查),Chrome27.0.1453.116(以前版本支持情况没调查),Firefox23.0(Firefox貌似是一直就有这个属性的,没调查,没有发言权。。), Safari5.1.7(以前版本支持情况没调查)中都支持,且返回值与document.documentElement.scrollTop或document.body.scrollTop的值相同。

但我刚才随便测试了网上的 一个页面,其document.compatMode返回值为"CSS1Compat",即标准模式了,按上面的规则,document.documentElement.scrollTop的返回值应是滚动的高度,document.body.scrollTop的值应是0。在Firfox,IE,Opera(各浏览器版本即我上面所列的版本)中也确实如此,但在webkit内核的chrome和safari中却正好相反:document.documentElement.scrollTop的值是0,document.body.scrollTop的值是页面滚动的高度。但window.pageYOffset的值一直是对的。

所以为了兼容,应采用下面这种写法:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值