宽容他人,放过自己。

js窗口尺寸获取

Posted on By anchoriteFili

引用链接:

HTML DOCUMENT窗口的尺寸和位置

属性/浏览器 Firefox/Chrome/Safari(带<!DOCTYPE>声明) Firefox/Chrome/Safari(不带<!DOCTYPE>声明) IE 6/7/8/9(带<!DOCTYPE>声明) IE 6/7/8/9(不带<!DOCTYPE>声明)
window.innerWidth/innerHeight 窗口显示区(可视区域)的宽度和高度,包括滚动条区域 窗口显示区(可视区域)的宽度和高度,包括滚动条区域 IE 6/7/8 Undefined IE 9 同Firefox IE 6/7/8 Undefined IE 9 同Firefox
document.documentElement.clientWidth/clientHeight 窗口显示区(可视区域)的宽度和高度,不包括滚动条区域 <html>元素的宽度和高度(注意包括了不可见的区域) IE 6/7/8/9 窗口显示区(可视区域)的宽度和高度,不包括滚动条区域 IE 6/7/8 总为0 IE 9 窗口显示区(可视区域)的宽度和高度,不包括滚动条区域
document.body.clientWidth/clientHeight <body>元素的宽度和高度(注意,包括了不可见的区域) 窗口显示区(可视区域)的宽度和高度,不包括滚动条区域 <body>元素的宽度和高度(注意,它包括了不可见的区域) IE 6/7/8 窗口显示区(可视区域)的宽度和高度,不包括滚动条区域) IE 9 <body>元素的宽度和高度(注意,它包括了不可见的区域)
window.pageXOffset/pageYOffset 当前页面相对于窗口显示区左上角的 X /Y位置,即水平/垂直滚动条已滚动的距离 当前页面相对于窗口显示区左上角的 X /Y位置,即水平/垂直滚动条已滚动的距离 IE 6/7/8 Undefined IE 9 同Firefox IE 6/7/8 Undefined IE 9 同Firefox
document.documentElement.scrollTop/scrollLeft Firefox: 当前页面相对于窗口显示区左上角的 X /Y位置,即水平/垂直滚动条已滚动的距离,同window.pageXOffset/pageYOffset Chrome/Safari:总为0 总为0 IE 6/7/8/9 当前页面相对于窗口显示区左上角的 X /Y位置,即水平/垂直滚动条已滚动的距离 IE 6/7/8 总为0 IE 9 当前页面相对于窗口显示区左上角的 X /Y位置,即水平/垂直滚动条已滚动的距离
document.body.scrollTop/scrollLeft FireFox:总为0 Chrome/Safari:当前页面相对于窗口显示区左上角的 X /Y位置,即水平/垂直滚动条已滚动的距离,同window.pageXOffset/pageYOffset 当前页面相对于窗口显示区左上角的 X /Y位置,即水平/垂直滚动条已滚动的距离,同window.pageXOffset/pageYOffset 总为0 IE 6/7/8 当前页面相对于窗口显示区左上角的 X /Y位置,即水平/垂直滚动条已滚动的距离 IE 9 当前页面相对于窗口显示区左上角的 X /Y位置,即水平/垂直滚动条已滚动的距离

综合上表,以下是获取浏览器窗口可视区域(不包括滚动条)和滚动条位置的代码,它兼容主流浏览器(IE/Firefox/Chrome/Safari):

// 获取浏览器窗口的可视区域的宽度
function getViewPortWidth() {
    return document.documentElement.clientWidth || document.body.clientWidth;
}
 
// 获取浏览器窗口的可视区域的高度
function getViewPortHeight() {
    return document.documentElement.clientHeight || document.body.clientHeight;
}
 
// 获取浏览器窗口水平滚动条的位置
function getScrollLeft() {
    return document.documentElement.scrollLeft || document.body.scrollLeft;
}
 
// 获取浏览器窗口垂直滚动条的位置
function getScrollTop() {
    return document.documentElement.scrollTop || document.body.scrollTop;
}