不同的<!DOCTYPE>定义会影响到javascript的正常运行以及运行结果。

今天我在javascript中想取得一个当前网页可见区域的高度时发生一个问题:

不管我怎么缩放当前的窗口,取得的可见区域我值都是一样的,我在IE、Firefox上测试结果都一样。

我想起以前发现定义<!DOCTYPE>和不定义<!DOCTYPE>会影响到Javascript的运行,我就到百度搜索了一下,才发现我的猜测是正确的,果然在这两种情况下,想得到可见区域的方法是不一样的:

在来自IE6以后如果在页面顶上加了doctype后,一般是在获取clientWidth, clientHeight,offsetWidth, offsetHeight,scrollWidth, scrollHeight,scrollTop, scrollLeft会返回不正确的值。
因为在加了doctype后,在ie6中这些document.body的属性已经重新分配给了document.documentElement

比如:原来document.body.clientHeight,就要改成document.documentElement.clientHeight

为了自适应,可以改了下代码:

var height = document.documentElement.clientHeight==0?document.body.clientHeight:document.documentElement.clientHeight