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 相关文章推荐
script的async属性以非阻塞的模式加载脚本
Jan 15 Javascript
js中的referrer返回上一页使用介绍
Sep 26 Javascript
JavaScript中setFullYear()方法的使用详解
Jun 11 Javascript
全面解析Bootstrap中nav、collapse的使用方法
May 22 Javascript
Node.js检测端口(port)是否被占用的简单示例
Sep 29 Javascript
jQuery表单插件ajaxForm实例详解
Jan 17 Javascript
js/jquery控制页面动态加载数据 滑动滚动条自动加载事件的方法
Feb 08 Javascript
浅谈React高阶组件
Mar 28 Javascript
vue.js做一个简单的编辑菜谱功能
May 08 Javascript
详解js中Array的方法及技巧
Sep 12 Javascript
node获取客户端ip功能简单示例
Aug 24 Javascript
nuxt 服务器渲染动态设置 title和seo关键字的操作
Nov 05 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
Pain 全世界最小最简单的PHP模板引擎 (普通版)
2011/10/23 PHP
php文档工具PHP Documentor安装与使用方法
2016/01/25 PHP
关于Aptana Studio生成自动备份文件的解决办法
2009/12/23 Javascript
IE6下opacity与JQuery的奇妙结合
2013/03/01 Javascript
详解JavaScript中的构造器Constructor模式
2016/01/14 Javascript
js阻止浏览器默认行为的简单实例
2016/05/15 Javascript
全面解析Bootstrap中tab(选项卡)的使用方法
2016/06/06 Javascript
AngularJS过滤器详解及示例代码
2016/08/16 Javascript
javascript代码调试之console.log 用法图文详解
2016/09/30 Javascript
Bootstrap框架的学习教程详解(二)
2016/10/18 Javascript
JS函数多个参数默认值指定方法分析
2016/11/28 Javascript
vue如何集成raphael.js中国地图的方法示例
2017/08/15 Javascript
详解使用vue-cli脚手架初始化Vue项目下的项目结构
2018/03/08 Javascript
使用koa-log4管理nodeJs日志笔记的使用方法
2018/11/30 NodeJs
javascript canvas检测小球碰撞
2020/04/17 Javascript
ES6使用新特性Proxy实现的数据绑定功能实例
2020/05/11 Javascript
[03:12]完美世界DOTA2联赛PWL DAY9集锦
2020/11/10 DOTA
JS设计模式之责任链模式实例详解
2018/02/03 Python
python使用锁访问共享变量实例解析
2018/02/08 Python
django 按时间范围查询数据库实例代码
2018/02/11 Python
python实现将读入的多维list转为一维list的方法
2018/06/28 Python
python numpy数组的索引和切片的操作方法
2018/10/20 Python
opencv3/python 鼠标响应操作详解
2019/12/11 Python
Python测试线程应用程序过程解析
2019/12/31 Python
IDLE下Python文件编辑和运行操作
2020/04/25 Python
flask开启多线程的具体方法
2020/08/02 Python
英国领先的NHS批准的在线药店:Pharmacy2U
2017/01/06 全球购物
美国女性卫生用品公司:Thinx
2017/06/30 全球购物
澳大利亚设计师服装在线:MISHA
2019/10/07 全球购物
应届大专毕业生个人自荐信
2013/09/22 职场文书
专升本自我鉴定
2013/10/10 职场文书
超市端午节活动方案
2014/01/23 职场文书
小学生学雷锋演讲稿
2014/04/25 职场文书
教师批评与自我批评心得体会
2014/10/16 职场文书
社区党员干部承诺书
2015/05/04 职场文书
导游词之镜泊湖
2019/12/09 职场文书