JS获取页面窗口大小的代码解读


Posted in Javascript onDecember 01, 2011

本节代码主要使用了Document对象关于窗口的一些属性,这些属性的主要功能和用法如下。
要得到窗口的尺寸,对于不同的浏览器,需要使用不同的属性和方法:若要检测窗口的真实尺寸,在Netscape下需要使用Window的属性;在IE下需要深入Document内部对body进行检测;在DOM环境下,若要得到窗口的尺寸,需要注意根元素<html>的尺寸,而不是<body>元素。
Window对象的innerWidth属性包含当前窗口的内部宽度。Window对象的innerHeight属性包含当前窗口的内部高度。
Document对象的body属性对应HTML文档的<body>标签。Document对象的documentElement属性则表示 HTML文档的根节点。
document.body.clientHeight表示HTML文档所在窗口的当前高度。document.body. clientWidth表示HTML文档所在窗口的当前宽度。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>请调整浏览器窗口</title> 
<meta http-equiv="content-type" content="text/html; charset=gb2312"> 
</head> 
<body> 
<h2 align="center">请调整浏览器窗口大小</h2><hr> 
<form action="#" method="get" name="form1" id="form1"> 
<!--显示浏览器窗口的实际尺寸--> 
浏览器窗口 的实际高度: <input type="text" name="availHeight" size="4"><br> 
浏览器窗口 的实际宽度: <input type="text" name="availWidth" size="4"><br> 
</form> 
<script type="text/javascript"> 
<!-- 
var winWidth = 0; 
var winHeight = 0; 
function findDimensions() //函数:获取尺寸 
{ 
//获取窗口宽度 
if (window.innerWidth) 
winWidth = window.innerWidth; 
else if ((document.body) && (document.body.clientWidth)) 
winWidth = document.body.clientWidth; 
//获取窗口高度 
if (window.innerHeight) 
winHeight = window.innerHeight; 
else if ((document.body) && (document.body.clientHeight)) 
winHeight = document.body.clientHeight; 
//通过深入Document内部对body进行检测,获取窗口大小 
if (document.documentElement && document.documentElement.clientHeight && 
document.documentElement.clientWidth) 
{ 
winHeight = document.documentElement.clientHeight; 
winWidth = document.documentElement.clientWidth; 
} 
//结果输出至两个文本框 
document.form1.availHeight.value= winHeight; 
document.form1.availWidth.value= winWidth; 
} 
findDimensions(); //调用函数,获取数值 
window.onresize=findDimensions; 
//--> 
</script> 
</body> 
</html>

运行该程序后,页面出现两个文本框,分别显示窗口当前的宽度和高度,。当调整浏览器窗口大小时,文本框中的数值会随之改变,分别是不同时刻窗口的大小。
源程序解读
(1)程序首先建立一个表单,包含两个文本框,用于显示窗口当前的宽度和高度,并且,其数值会随窗口大小的改变而变化。
(2)在随后的JavaScript代码中,首先定义了两个变量winWidth和winHeight,用于保存窗口的高度值和宽度值。
(3)然后,在函数findDimensions ( )中,使用window.innerHeight和window.innerWidth得到窗口的高度和宽度,并将二者保存在前述两个变量中。
(4)再通过深入Document内部对body进行检测,获取窗口大小,并存储在前述两个变量中。
(5)在函数的最后,通过按名称访问表单元素,结果输出至两个文本框。
(6)在JavaScript代码的最后,通过调用findDimensions ( )函数,完成整个操作。
Javascript 相关文章推荐
JS 时间显示效果代码
Aug 23 Javascript
Raphael一个用于在网页中绘制矢量图形的Javascript库
Jan 08 Javascript
JQuery性能优化的几点建议
May 14 Javascript
jQuery元素选择器用法实例
Dec 23 Javascript
js闭包实现按秒计数
Apr 23 Javascript
为什么JavaScript没有块级作用域
May 22 Javascript
微信小程序 本地数据读取实例
Apr 27 Javascript
详解Vue中过度动画效果应用
May 25 Javascript
关于 angularJS的一些用法
Nov 29 Javascript
从0到1搭建Element的后台框架的方法步骤
Apr 10 Javascript
解决vuex数据异步造成初始化的时候没值报错问题
Nov 13 Javascript
Jquery+javascript实现支付网页数字键盘
Dec 21 jQuery
基于JQuery的抓取博客园首页RSS的代码
Dec 01 #Javascript
jQuery 中使用JSON的实现代码
Dec 01 #Javascript
jquery中dom操作和事件的实例学习 下拉框应用
Dec 01 #Javascript
JS代码放在head和body中的区别分析
Dec 01 #Javascript
js获取浏览器的可视区域尺寸的实现代码
Nov 30 #Javascript
js取滚动条的尺寸的函数代码
Nov 30 #Javascript
window.event快达到全浏览器支持了,以后使用就方便了
Nov 30 #Javascript
You might like
《魔兽世界》惊魂幻象将获得调整
2020/03/08 其他游戏
wamp安装后自定义配置的方法
2014/08/23 PHP
Laravel中encrypt和decrypt的实现方法
2017/09/24 PHP
php使用pecl方式安装扩展操作示例
2019/08/12 PHP
Thinkphp极验滑动验证码实现步骤解析
2020/11/24 PHP
js监听键盘事件示例代码
2013/07/26 Javascript
做好七件事帮你提升jQuery的性能
2014/02/06 Javascript
JQuery弹出层示例可自定义
2014/05/19 Javascript
Node.js实现简单聊天服务器
2014/06/20 Javascript
超棒的响应式布局jQuery插件Freetile.js
2014/11/17 Javascript
JavaScript实现点击单元格改变背景色的方法
2016/02/12 Javascript
Node.js Addons翻译(C/C++扩展)
2016/06/12 Javascript
JS获取地址栏参数的两种方法(简单实用)
2016/06/14 Javascript
AngularJS入门教程之更多模板详解
2016/08/19 Javascript
Bootstrap模态框禁用空白处点击关闭
2016/10/20 Javascript
jquery uploadify隐藏上传进度的实现方法
2017/02/06 Javascript
JavaScript表单验证完美代码
2017/03/02 Javascript
vue2.0 自定义日期时间过滤器
2017/06/07 Javascript
原生JS+CSS实现炫酷重力模拟弹跳系统的登录页面
2017/11/01 Javascript
利用ES6实现单例模式及其应用详解
2017/12/09 Javascript
JS实现在文本指定位置插入内容的简单示例
2017/12/22 Javascript
JavaScript实现无限轮播效果
2020/11/19 Javascript
详解Python 函数如何重载?
2019/04/23 Python
python基于SMTP协议发送邮件
2019/05/31 Python
PyQt5创建一个新窗口的实例
2019/06/20 Python
win10下opencv-python特定版本手动安装与pip自动安装教程
2020/03/05 Python
英国音乐设备和乐器商店:Gear4music
2017/10/16 全球购物
委托与事件是什么关系?为什么要使用委托
2014/04/18 面试题
GC是什么?为什么要有GC?
2013/12/08 面试题
高级人员简历的自我评价分享
2013/11/03 职场文书
运动会致辞稿50字
2014/02/04 职场文书
2014两会优秀的心得体会范文
2014/03/17 职场文书
Python Parser的用法
2021/05/12 Python
CentOS7安装GlusterFS集群以及相关配置
2022/04/12 Servers
Golang连接并操作MySQL
2022/04/14 MySQL
JavaScript前端面试扁平数据转tree与tree数据扁平化
2022/06/14 Javascript