JavaScript与jQuery获取浏览器窗口可视区域、滚动条及文档尺寸详解
本文详细解析在JavaScript和jQuery环境下获取浏览器窗口可视区域宽高、滚动条位置及整个网页文档尺寸的方法。涵盖IE、Firefox、Safari等主流浏览器的兼容性问题,对比clientWidth、offsetWidth及window.innerWidth等属性的差异,并提供包含滚动条与不包含滚动条的尺寸计算逻辑及jQuery常用API示例。
浏览器窗口尺寸获取概述
本文旨在介绍如何获取浏览器窗口的可视区域高度与宽度,以及滚动条的高度,供开发者参考。
在IE浏览器中,获取浏览器显示窗口大小的方式较为特定,具体实现代码如下:
代码片段如下:
document.body.offsetWidth
document.body.offsetHeight对于已声明DOCTYPE的浏览器,可以通过以下方式获取浏览器显示窗口的大小:
代码示例如下:
document.documentElement.clientWidth
document.documentElement.clientHeightIE、Firefox、Safari均支持上述方法;Opera虽支持该属性,但其返回值为页面尺寸而非窗口尺寸。
除IE外的所有主流浏览器均将此类信息存储于window对象中,可通过以下方式获取:
代码示例如下:
window.innerWidth
window.innerHeight获取整个网页尺寸的一般方法如下:
代码示例如下:
document.body.scrollWidth
document.body.scrollHeight获取屏幕分辨率高度的一般方法如下:
代码示例如下:
window.screen.height
window.screen.width综合实例与滚动条处理
以下是一个综合实例:
代码示例如下:
function getViewSizeWithoutScrollbar(){//不包含滚动条
return {
width : document.documentElement.clientWidth,
height: document.documentElement.clientHeight
}
}
function getViewSizeWithScrollbar(){//包含滚动条
if(window.innerWidth){
return {
width : window.innerWidth,
height: window.innerHeight
}
}else if(document.documentElement.offsetWidth == document.documentElement.clientWidth){
return {
width : document.documentElement.offsetWidth,
height: document.documentElement.offsetHeight
}
}else{
return {
width : document.documentElement.clientWidth + getScrollWith(),
height: document.documentElement.clientHeight + getScrollWith()
}
}
}不同IE版本的尺寸计算差异
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 = heightjQuery获取网页尺寸与滚动位置
另外附上个人常用的获取整页宽高的方法(需引入jQuery框架):
代码示例如下:
$(document).width() < $('body').width() ? $(document).width() : $('body').width();
$(document).height() < $('body').height() ? $(document).height() : $('body').height();alert($(window).height()); //浏览器当前窗口可视区域高度
alert($(document).height()); //浏览器当前窗口文档的高度
alert($(document.body).height());//浏览器当前窗口文档body的高度
alert($(document.body).outerHeight(true));//浏览器当前窗口文档body的总高度 包括border padding margin
alert($(window).width()); //浏览器当前窗口可视区域宽度
alert($(document).width());//浏览器当前窗口文档对象宽度
alert($(document.body).width());//浏览器当前窗口文档body的高度
alert($(document.body).outerWidth(true));//浏览器当前窗口文档body的总宽度 包括border padding margin
alert($(document).scrollTop()); //获取滚动条到顶部的垂直高度
alert($(document).scrollLeft()); //获取滚动条到左边的垂直宽度
js-cookie 安装与基础用法:set、get、remove 详解
2026-11-05 16:35:06
适合JavaScript初学者的实战项目:制作简易待办事项列表
2026-11-05 16:17:07
JS打开新标签页时怎么通过URL传递参数
2026-11-05 12:21:08
sigma.js 自定义节点样式:设置颜色、大小及标签显示的技巧
2026-11-05 09:55:00
JS 生成的统计图怎么导出为 PNG 图片或 PDF 文件?
2026-11-05 09:37:58
