对于这段代码有些异议:
var w= document.documentElement.clientWidth
|| document.body.clientWidth;
var h= document.documentElement.clientHeight
|| document.body.clientHeight;
document.body.clientWidth和Height在测试的时候得到的都是HTML内容的宽度和高度而不是浏览器窗口的可是区域大小,通过以下代码可以看出:
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </head> <body> <!-- <br /><br /><br /><br /><br /><br /><br /><br /> --> <script type="text/javascript"> document.write('document.documentElement 宽:' + document.documentElement.clientWidth + ' 高:' + document.documentElement.clientHeight + '<br />'); document.write('document.body 宽:' + document.body.clientWidth + ' 高:' + document.body.clientHeight + '<br />'); document.write('window.inner 宽:' + window.innerWidth + ' 高:' + window.innerHeight + '<br />'); </script> </body> </html>
我可以通过以上代码看到window.innerWidth、Height与document.documentElement.clientWidth、Height的结果是一样的,而document.body.clientWidth、Height的结果,宽和高都小于之前的两对值,特别是Height高度。为什么呢?因为body是存储网页标签和内容的地方,在没有内容是,其高度很低,我们可以去掉上面代码包含<br />标签的注释<!!--->,在运行代码就可以看到document.body.client获取的高度就变化了。
根据上面代码的结果,所以认为上面代码,应该修改为
var w= document.documentElement.clientWidth
|| window.innerWidth;
var h= document.documentElement.clientHeight
|| window.innerHeight;