怎样使用JavaScript获取页面的高度?

在日常开发任务中,前端需要我们得到可见区域的宽度和高度。特别是对于拖动相关的应用,需要判断拖动的边界值。由于实际的需要,于是在网上找到了相关的文章,然后加以整理,通过自己的理解描述一下,共需要的开发朋友们参考。详细信息请看正文。(注意:下面只展示通过纯JavaScript来获取,如果你使用前端框架就不需要考虑兼容问题了,如:JQuery)

在日常开发任务中,前端需要我们得到可见区域的宽度和高度。特别是对于拖动相关的应用,需要判断拖动的边界值。由于实际的需要,于是在网上找到了相关的文章,然后加以整理,通过自己的理解描述一下,共需要的开发朋友们参考。详细信息请看正文。(注意:下面只展示通过纯JavaScript来获取,如果你使用前端框架就不需要考虑兼容问题了,如:JQuery)

什么是可见区域?

从字面上面解释就是我们可以看见的区域,实际上面也是如此。在浏览器中,由于内容太多,浏览器的屏幕太小不能一次全部显示,此时浏览器就出现了滚动条,可见区域及不通过滚动条就可以看见的区域称为可见区域。

浏览器兼容

IE浏览器

代码描述
document.body.clientWidthBODY对象宽度
document.body.clientHeightBODY对象高度
document.documentElement.clientWidth可见区域宽度
document.documentElement.clientHeight   可见区域高度

FireFox浏览器

代码描述
document.body.clientWidthBODY对象宽度
document.body.clientHeightBODY对象高度
document.documentElement.clientWidth可见区域宽度
document.documentElement.clientHeight   可见区域高度

Opera浏览器 

代码
描述
document.body.clientWidth可见区域宽度
document.body.clientHeight可见区域高度
document.documentElement.clientWidth   页面对象宽度(即BODY对象宽度加上Margin宽)
document.documentElement.clientHeight   页面对象高度(即BODY对象高度加上Margin高)

而如果没有定义W3C的标准(即没有添加<DOCTYPE>标签)

IE浏览器为:

代码
描述
document.documentElement.clientWidth0
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.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 屏幕可用工作区宽度

工具方法

1、取窗口滚动条高度 

/**
 * 取窗口滚动条高度 
 */
function getScrollTop() {
    var scrollTop=0;
    if ( document.documentElement && document.documentElement.scrollTop ) {
        scrollTop=document.documentElement.scrollTop;
    } else if( document.body ) {
        scrollTop = document.body.scrollTop;
    }
    return scrollTop;
}

2、取窗口可视范围的高度 

/**
 * 取窗口可视范围的高度 
 */
function getClientHeight() {
    var clientHeight = 0;
    if ( document.body.clientHeight && document.documentElement.clientHeight ) {
        var clientHeight = (document.body.clientHeight < document.documentElement.clientHeight) ? 
                                            document.body.clientHeight : document.documentElement.clientHeight;        
    } else {
        var clientHeight = (document.body.clientHeight > document.documentElement.clientHeight) ?
                                            document.body.clientHeight : document.documentElement.clientHeight;    
    }
    return clientHeight;
}

3、取文档内容实际高度 

/**
 * 取文档内容实际高度 
 */
function getScrollHeight() {
    return Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);
}
游手好闲地学习,并不比学习游手好闲好。 —— 约翰·贝勒斯
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号