当前位置: 代码迷 >> Web前端 >> document.documentElement.clientWidth为0的有关问题
  详细解决方案

document.documentElement.clientWidth为0的有关问题

热度:522   发布时间:2013-11-14 22:02:51.0
document.documentElement.clientWidth为0的问题

?

?

1.?http://www.cnblogs.com/ConjurerYang/archive/2009/08/12/1544251.html

2.?http://hi.baidu.com/bluedream_119/item/26db5a73c9774344ee1e532a

?

1、javascript中的 document.body.clientHeight 和 document.documentElement.clientHeight 的区别

这个问题是我在整合新的美工页面的时候发现的,在整合页面的时候菜单页面始终显示不出来。但是查看源代码,里面又已经打印出来了所有的菜单。唯一的解释就是js的问题了。用火狐firebug测试,发现其中一个取得页面高度的变量 bodyHeight 一直是0。就是因为他是0,所以菜单才显示不出来。

而取得bodyHeight 高度的语句是 var bodyHeight = document.documentElement.clientHeight;

于是在网上查找相关的资料,结合美工页面和程序的页面对比。

document.body.clientWidth ==> BODY对象宽度
document.body.clientHeight ==> BODY对象高度
document.documentElement.clientWidth ==> 可见区域宽度
document.documentElement.clientHeight ==> 可见区域高度

程序页面里面少了一句 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

我在ie下做了一下测试,下面是测试代码

复制代码
?1?<html?xmlns=”http://www.w3.org/1999/xhtml”>
?2??<head>
?3???<title>?New?Document?</title>
?4???<script?language="JavaScript">
?5???<!--
?6???function?a(){
?7?????????document.getElementById("bodyheight").innerText?=?document.body.clientHeight;
?8?????????document.getElementById("documentheight").innerText?=?document.documentElement.clientHeight;
?9?????}
10???//-->
11???</script>
12??</head>
13?
14??<body>
15?????<p>
16?????????<a?href="javascript:a()">click?here</a>
17?????????<br/>
18?????????????document.body.clientHeight?=?<span?id="bodyheight"></span>?px
19?????????<br/>
20?????????????document.documentElement.clientHeight?=?<span?id="documentheight"></span>?px
21?????</p>
22??</body>
23?</html>
复制代码


测试结果:

当页面上有DOCTYPE的时候,值为

document.body.clientHeight =?54px?
document.documentElement.clientHeight =?729px

当没有DOCTYPE时

document.body.clientHeight =?729px?
document.documentElement.clientHeight =?0px

可以看出,document.body.clientHeight 和 document.documentElement.clientHeight 的区别。

就是因为少了DOCTYPE 所以 document.documentElement.clientHeight 的值为0。而换成 document.body.clientHeight就好了。

为什么少了DOCTYPE,document.documentElement.clientHeight会为0呢?

这是W3C标准的支持。在网上查到一篇文章那位作者有详细的解释http://hi.baidu.com/bluedream_119/blog/item/dc377d4bef83aff783025c68.html

?

2、关于tomcat服务器的路径大小写问题

在整合美工页面的过程中,由于美工在引用js和css样式的时候路径时而大写,时而小写。在windows用ie直接打开都能浏览,页面显示正常。

但是当我整合到项目里面以后,架设到tomcat中的时候,页面样式全部消失。找了半天原因未果,一个同事说是不是因为路径大小写的原因,一试,果然。

记下,以后注意路径的大小写问题。貌似tomcat,websphere都对路径的大小写验证蛮严格的。

  相关解决方案