js获取浏览器基本信息大全


Posted in Javascript onNovember 27, 2014

网页可见区域宽: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

HTML精确定位:scrollLeft,scrollWidth,clientWidth,offsetWidth
scrollHeight: 获取对象的滚动高度。
scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离
scrollTop:设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离
scrollWidth:获取对象的滚动宽度
offsetHeight:获取对象相对于版面或由父坐标 offsetParent 属性指定的父坐标的高度
offsetLeft:获取对象相对于版面或由 offsetParent 属性指定的父坐标的计算左侧位置
offsetTop:获取对象相对于版面或由 offsetTop 属性指定的父坐标的计算顶端位置
event.clientX 相对文档的水平座标
event.clientY 相对文档的垂直座标
event.offsetX 相对容器的水平坐标
event.offsetY 相对容器的垂直坐标
document.documentElement.scrollTop 垂直方向滚动的值
event.clientX+document.documentElement.scrollTop 相对文档的水平座标+垂直方向滚动的量

IE,FireFox 差异如下

IE6.0、FF1.06+:

clientWidth = width + padding

clientHeight = height + padding

offsetWidth = width + padding + border

offsetHeight = height + padding + border

IE5.0/5.5

clientWidth = width - border

clientHeight = height - border

offsetWidth = width

offsetHeight = height

(需要提一下:CSS中的margin属性,与clientWidth、offsetWidth、clientHeight、offsetHeight均无关)

-------------------

技术要点

本节代码主要使用了Document对象关于窗口的一些属性,这些属性的主要功能和用法如下。

要得到窗口的尺寸,对于不同的浏览器,需要使用不同的属性和方法:若要检测窗口的真实尺寸,在Netscape下需要使用Window的属性;在 IE下需要深入Document内部对body进行检测;在DOM环境下,若要得到窗口的尺寸,需要注意根元素的尺寸,而不是元素。

Window对象的innerWidth属性包含当前窗口的内部宽度。Window对象的innerHeight属性包含当前窗口的内部高度。

Document对象的body属性对应HTML文档的标签。Document对象的documentElement属性则表示HTML文档的根节点。

document.body.clientHeight表示HTML文档所在窗口的当前高度。document.body. clientWidth表示HTML文档所在窗口的当前宽度。

关于获取各种浏览器可见窗口大小的一点点研究。

在我本地测试当中:在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的标准在作怪啊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高)

真是一件麻烦事情,其实就前端设计开发来看,宁可少一些对象和方法,不使用最新的标准要方便许多啊。但是跟不上潮流就永远做不了一个高级设计师,所以这些知识我们还是必须要理解和熟练掌握的。

Javascript 相关文章推荐
Javascript 类与静态类的实现(续)
Apr 02 Javascript
jquery文字上下滚动的实现方法
Mar 22 Javascript
解析JavaScript中的不可见数据类型
Dec 02 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 图片库
Jan 09 Javascript
浅谈JavaScript的push(),pop(),concat()方法
Jun 03 Javascript
Bootstrap前端开发案例二
Jun 17 Javascript
jQuery ajax的功能实现方法详解
Jan 06 Javascript
js replace 全局替换的操作方法
Jun 12 Javascript
vue-router中scrollBehavior的巧妙用法
Jul 09 Javascript
vue组件横向树实现代码
Aug 02 Javascript
layui问题之模拟select点击事件的实例讲解
Aug 15 Javascript
jQuery ajax仿Google自动提示SearchSuggess功能示例
Mar 28 jQuery
jQuery实现多按钮单击变色
Nov 27 #Javascript
jQuery的ready方法详解
Nov 27 #Javascript
javascript 面向对象封装与继承
Nov 27 #Javascript
javascript制作坦克大战全纪录(2)
Nov 27 #Javascript
javascript制作坦克大战全纪录(1)
Nov 27 #Javascript
使用jsonp完美解决跨域问题
Nov 27 #Javascript
JavaScript变量声明详解
Nov 27 #Javascript
You might like
PHP滚动日志的代码实现
2015/06/10 PHP
常见PHP数据库解决方案分析介绍
2015/09/24 PHP
php实现产品加入购物车功能(1)
2020/07/23 PHP
JS 文字符串转换unicode编码函数
2009/05/30 Javascript
用 Javascript 验证表单(form)中多选框(checkbox)值
2009/09/08 Javascript
Javascript实现的类似Google的Div拖动效果代码
2011/08/09 Javascript
JavaScript获得页面base标签中url的方法
2015/04/03 Javascript
jQuery实现转动随机数抽奖效果的方法
2015/05/21 Javascript
基于jQuery的网页影音播放器jPlayer的基本使用教程
2016/03/08 Javascript
微信JS-SDK坐标位置如何转换为百度地图坐标
2016/07/04 Javascript
React中上传图片到七牛的示例代码
2017/10/10 Javascript
vue+iview+less 实现换肤功能
2018/08/17 Javascript
nodejs 使用nodejs-websocket模块实现点对点实时通讯
2018/11/28 NodeJs
vue 指令和过滤器的基本使用(品牌管理案例)
2019/11/04 Javascript
Angular之jwt令牌身份验证的实现
2020/02/14 Javascript
js 将多个对象合并成一个对象 assign方法的实现
2020/09/24 Javascript
使用Mock.js生成前端测试数据
2020/12/13 Javascript
python网络爬虫采集联想词示例
2014/02/11 Python
django项目运行因中文而乱码报错的几种情况解决
2017/11/07 Python
python-numpy-指数分布实例详解
2019/12/07 Python
python实现多进程按序号批量修改文件名的方法示例
2019/12/30 Python
tensorflow 2.1.0 安装与实战教程(CASIA FACE v5)
2020/06/30 Python
Python操作Excel的学习笔记
2021/02/18 Python
纯CSS3实现带动画效果导航菜单无需js
2013/09/27 HTML / CSS
html5适合移动应用开发的12大特性
2014/03/19 HTML / CSS
Hoover胡佛官网:美国吸尘器和洗地机品牌
2019/01/09 全球购物
万代美国官网:PREMIUM BANDAI USA
2020/09/11 全球购物
数字天堂软件测试面试题
2012/12/23 面试题
护理专业的自荐信
2013/10/22 职场文书
公司授权委托书样本
2014/09/15 职场文书
文员转正自我鉴定怎么写
2014/09/29 职场文书
检讨书1000字
2014/10/11 职场文书
警告通知
2015/04/25 职场文书
二审答辩状范文
2015/05/22 职场文书
军训结束新闻稿
2015/07/17 职场文书
解析MySQL binlog
2021/06/11 MySQL