對於瀏覽器窗口來說,通過獲取<html>標籤的clientWidth和clientHeight屬性就可以得到瀏覽器窗口的可視寬度和高度,由於<html>標籤在腳本中表示為document.documentElement,因此可以這樣設計:
var w=document.documentElement.clientWidth;
var h=document.documentElement.clientHeight;
不過在IE 6.0以下版本的瀏覽器中(即在IE瀏覽器的「怪異」解析模式下),body是最頂層的可視元素,而html元素保持隱藏,因此只有通過<body>標籤的clientWidth和clientHeight屬性才可以得到瀏覽器窗口的可視寬度和高度,而<body>標籤在腳本中表示為document.body,要兼容IE「怪異」解析模式可以這樣設計:
var w=document.body.clientWidth;
var h=document.body.clientHeight;
然而,支持DOM解析模式的瀏覽器都把body視為一個普通的塊級元素,而<html>標籤包含整個瀏覽器窗口。因此,考慮瀏覽器的兼容性,可以這樣設計,如果瀏覽器支持DOM標準,那麼使用documentElement對像讀取body元素,若該對像不存在,則使用body對像讀取body元素:
var w=document.documentElement.clientWidth||document.body.clientWidth;
var h=document.documentElement.clientHeight||document.body.clientHeight;
如果窗口包含內容超出了窗口可視區域,那麼應該使用scrollWidth和scrollHeight屬性來獲取窗口的實際寬度和高度。不過對於document.documentElement和document.body來說,不同瀏覽器對於它們的支持略有差異。例如:
<body >
<p >
</p>
</body>
<script language="javascript"type="text/javascript">
var wb=document.body.scrollWidth;
var hb=document.body.scrollHeight;
var wh=document.documentElement.scrollWidth;
var hh=document.documentElement.scrollHeight;
</script>
不同瀏覽器的scrollHeight和scrollWidth返回值比較見表6.6。
通過上面的返回值比較可以看出,不同瀏覽器使用documentElement對像獲取瀏覽器窗口的實際尺寸是一致的,但使用Body對像獲取對應尺寸就會存在很大差異,特別是Firefox瀏覽器,它把scrollWidth與clientWidth屬性值視為相等,顯然這是錯誤的。