js获取网页高度(详细整理)


Posted in Javascript onDecember 28, 2012

网页可见区域宽: document.body.clientWidth
网页可见区域高: document.body.clientHeight
网页可见区域宽: document.body.offsetWidth (包括边线的宽)
网页可见区域高: document.body.offsetHeight (包括边线的高)
网页正文全文宽: document.body.scrollWidth
网页正文全文高: document.body.scrollHeight
网页被卷去的高: document.body.scrollTop
网页被卷去的左: document.body.scrollLeft
网页正文部分上: window.screenTop
网页正文部分左: window.screenLeft
屏幕分辨率的高: window.screen.height
屏幕分辨率的宽: window.screen.width
屏幕可用工作区高度: window.screen.availHeight
屏幕可用工作区宽度: window.screen.availWidth

<script> 
function getInfo() 
{ 
var s = ""; 
s += " 网页可见区域宽:"+ document.body.clientWidth; 
s += " 网页可见区域高:"+ document.body.clientHeight; 
s += " 网页可见区域宽:"+ document.body.offsetWidth + " (包括边线和滚动条的宽)"; 
s += " 网页可见区域高:"+ document.body.offsetHeight + " (包括边线的宽)"; 
s += " 网页正文全文宽:"+ document.body.scrollWidth; 
s += " 网页正文全文高:"+ document.body.scrollHeight; 
s += " 网页被卷去的高(ff):"+ document.body.scrollTop; 
s += " 网页被卷去的高(ie):"+ document.documentElement.scrollTop; 
s += " 网页被卷去的左:"+ document.body.scrollLeft; 
s += " 网页正文部分上:"+ window.screenTop; 
s += " 网页正文部分左:"+ window.screenLeft; 
s += " 屏幕分辨率的高:"+ window.screen.height; 
s += " 屏幕分辨率的宽:"+ window.screen.width; 
s += " 屏幕可用工作区高度:"+ window.screen.availHeight; 
s += " 屏幕可用工作区宽度:"+ window.screen.availWidth; 
s += " 你的屏幕设置是 "+ window.screen.colorDepth +" 位彩色"; 
s += " 你的屏幕设置 "+ window.screen.deviceXDPI +" 像素/英寸"; 
//alert (s); 
} 
getInfo(); 
</script>

在我本地测试当中:
在IE、FireFox、Opera下都可以使用
document.body.clientWidth
document.body.clientHeight
即可获得,很简单,很方便。
而在公司项目当中:
Opera仍然使用
document.body.clientWidth
document.body.clientHeight
可是IE和FireFox则使用
document.documentElement.clientWidth
document.documentElement.clientHeight
原来是W3C的标准在作怪啊
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

如果在页面中添加这行标记的话
在IE中
document.body.clientWidth ==> BODY对象宽度
document.body.clientHeight ==> BODY对象高度
document.documentElement.clientWidth ==> 可见区域宽度
document.documentElement.clientHeight ==> 可见区域高度
在FireFox中
document.body.clientWidth ==> BODY对象宽度
document.body.clientHeight ==> BODY对象高度
document.documentElement.clientWidth ==> 可见区域宽度
document.documentElement.clientHeight ==> 可见区域高度
?
在Opera中
document.body.clientWidth ==> 可见区域宽度
document.body.clientHeight ==> 可见区域高度
document.documentElement.clientWidth ==> 页面对象宽度(即BODY对象宽度加上Margin宽)
document.documentElement.clientHeight ==> 页面对象高度(即BODY对象高度加上Margin高)
而如果没有定义W3C的标准,则
IE为
document.documentElement.clientWidth ==> 0
document.documentElement.clientHeight ==> 0
FireFox为
document.documentElement.clientWidth ==> 页面对象宽度(即BODY对象宽度加上Margin宽)document.documentElement.clientHeight ==> 页面对象高度(即BODY对象高度加上Margin高)
Opera为
document.documentElement.clientWidth ==> 页面对象宽度(即BODY对象宽度加上Margin宽)document.documentElement.clientHeight ==> 页面对象高度(即BODY对象高度加上Margin高)
真是一件麻烦事情,其实就开发来看,宁可少一些对象和方法,不使用最新的标准要方便许多啊。
有时候需要取页面的底部, 就会用到document.body.clientHeight , 在HTML 标准中(这一句就能取到整个页面的高度, 不论body 的实际内容到底有多高, 例如, 1074*768 的分辨率, 页面最大化时, 这个高度约为720 , 即使页面上只有一句”hello world” , 也仍然取到720.
可是在XHTML中, 如果body 体中只有一行, 则document.body.clientHeight 只能取到那一行的高度, 约20px, 这时如何还想取到整个页面的高度, 就要用document.documentElement.clientHeight 来获取了.
原因是: 在HTML 中, body 是整个DOM 的根, 而在XHTML 中, document 才是根, body 不再是根, 所以取body 的属性时, 不能再取到整个页面的值.

区别新旧标准的行是:
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0 Transitional//EN” >
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd“>
前者指明该页面使用旧标准, 后者指明该页面使用新标准.

总结:
XHTML中用 document.documentElement.clientHeight 代替

document.body.clientHeight
Javascript 相关文章推荐
asp批量修改记录的代码
Jun 25 Javascript
JavaScript 笔记二 Array和Date对象方法
May 22 Javascript
用jquery存取照片的具体实现方法
Jun 30 Javascript
动态加载script文件的两种方法
Aug 15 Javascript
jquery设置元素的readonly和disabled的写法
Sep 22 Javascript
JS简单实现登陆验证附效果图
Nov 19 Javascript
js实现页面跳转重定向的几种方式
May 29 Javascript
jQuery的remove()方法使用详解
Aug 11 Javascript
JS获取字符串实际长度(包含汉字)的简单方法
Aug 11 Javascript
Jil,高效的json序列化和反序列化库
Feb 15 Javascript
基于Vuex无法观察到值变化的解决方法
Mar 01 Javascript
用element的upload组件实现多图片上传和压缩的示例代码
Feb 12 Javascript
前台js改变Session的值(用ajax实现)
Dec 28 #Javascript
window.open的页面如何刷新(父页面)上层页面
Dec 28 #Javascript
CSS(js)限制页面显示的文本字符长度
Dec 27 #Javascript
jQuery基础框架浅入剖析
Dec 27 #Javascript
Three.js源码阅读笔记(基础的核心Core对象)
Dec 27 #Javascript
Three.js源码阅读笔记(Object3D类)
Dec 27 #Javascript
Three.js源码阅读笔记(物体是如何组织的)
Dec 27 #Javascript
You might like
很温暖很温暖的Lester Young
2021/03/03 冲泡冲煮
smarty基础之拼接字符串的详解
2013/06/18 PHP
PHP实现负载均衡session共享redis缓存操作示例
2018/08/22 PHP
JavaScript 新手24条实用建议[TUTS+]
2009/06/21 Javascript
js面向对象 多种创建对象方法小结
2012/05/21 Javascript
jQuery之字体大小的设置方法
2014/02/27 Javascript
js中使用replace方法完成某个字符的转换
2014/08/20 Javascript
Javascript中的Prototype到底是什么
2016/02/16 Javascript
vue之数据交互实例代码
2017/06/16 Javascript
详解用node搭建简单的静态资源管理器
2017/08/09 Javascript
jQuery事件委托代码实践详解
2019/06/21 jQuery
JS实现打砖块游戏
2020/02/14 Javascript
记录一次websocket封装的过程
2020/11/23 Javascript
JS算法教程之字符串去重与字符串反转
2020/12/15 Javascript
[01:04:01]2014 DOTA2华西杯精英邀请赛5 24 DK VS VG
2014/05/25 DOTA
实例解析Python中的__new__特殊方法
2016/06/02 Python
django实现前后台交互实例
2017/08/07 Python
详解python eval函数的妙用
2017/11/16 Python
Python3利用Dlib19.7实现摄像头人脸识别的方法
2018/05/11 Python
Python提取支付宝和微信支付二维码的示例代码
2019/02/15 Python
python实现socket+threading处理多连接的方法
2019/07/23 Python
Pytest mark使用实例及原理解析
2020/02/22 Python
详解pycharm的python包opencv(cv2)无代码提示问题的解决
2021/01/29 Python
HTTP状态码详解
2021/03/18 杂记
俄罗斯护发和专业化妆品购物网站:Hihair
2019/09/28 全球购物
Made in Design意大利:现代家具、名家灯具和装饰
2020/10/27 全球购物
PHP面试题及答案二
2015/05/23 面试题
高中毕业自我鉴定范文
2013/10/02 职场文书
难忘的一天教学反思
2014/04/30 职场文书
2014年图书馆个人工作总结
2014/12/18 职场文书
应届生求职自荐信范文
2015/03/04 职场文书
2015年度销售个人工作总结
2015/03/31 职场文书
nginx proxy_cache 缓存配置详解
2021/03/31 Servers
详解CocosCreator消息分发机制
2021/04/16 Javascript
对PyTorch中inplace字段的全面理解
2021/05/22 Python
SQL Server中锁的用法
2022/05/20 SQL Server