很多时候需要获得当前浏览器窗口大小,以获得好的页面布局,查查帮助无非就是:
document.body.scrollHeight
document.body.scrollWidth
document.body.clientHeight
document.body.clientWidth
document.documentElement.scrollHeight
document.documentElement.scrollWidth
document.documentElement.clientHeight
document.documentElement.clientWidth
在使用上面的方法时必须得注意,文档是否定义了DOCTYPE,检测是否定义DOCTYPE使用:
document.compatMode
其返回两种类型:BackCompat,CSS1Compat , 当文档类型定义了DOCTYPE时返回CSS1Compat
文档定义了DOCTYPE时使用:
document.documentElement.scrollHeight
document.documentElement.scrollWidth
document.documentElement.clientHeight
document.documentElement.clientWidth
否则使用:
document.body.scrollHeight
document.body.scrollWidth
document.body.clientHeight
document.body.clientWidth
但是,问题远没有这么简单,看看这个简单的页面的效果:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>scrollHeight,clientHeight,scrollWidth,clientWidth</title>
<script type="text/javascript" language="javascript">
function but_click1()
{
alert((document.compatMode != "CSS1Compat") ? document.body.scrollHeight : document.documentElement.scrollHeight);
}
function but_click2()
{
alert((document.compatMode != "CSS1Compat") ? document.body.clientHeight : document.documentElement.clientHeight);
}
function but_click3()
{
alert((document.compatMode != "CSS1Compat") ? document.body.scrollWidth : document.documentElement.scrollWidth);
}
function but_click4()
{
alert((document.compatMode != "CSS1Compat") ? document.body.clientWidth : document.documentElement.clientWidth);
}
</script>
</head>
<body style="margin:0;overflow-x:hidden;overflow-y:hidden">
<input type="button" height=40px onclick="but_click2()" value="clientHight" >
<br>
<input type="button" height=40px onclick="but_click4()" value="clientWidth" >
<br>
<input type="button" height=40px onclick="but_click1()" value="scrollHeight" >
<br>
<input type="button" height=40px onclick="but_click3()" value="scrollWidth" >
</body>
</html>
这个页面使用不同的浏览器打开,在ie7下无论是否定义DOCTYPE,scrollHeight获得的值都不会变化;同样FF也没有影响;只有对chrome有影响。当你实际运行上面的代码时,你还会发现3种浏览器中获得的值居然也不同!
结果大致是这样:
scrollHeight
有文档类型定义
在chrome 返回的是页面控件高度的和
在ie下 返回的是页面控件高度的和
在firefox 下返回整个窗口高度
scrollHeight
没有文档类型定义
在chrome 返回整个窗口实际高度
在ie 返回的是页面控件高度的和
在firefox下返回整个窗口高度
scrollWidth 在有无DOCTYPE还是在不同浏览器上结果基本一致,IE偏小,不知道是不是右侧的scrollbar影响了结果,我猜的^_^
也就是说无论在有无DOCTYPE定义的页面,在ie下用scrollHeight获得不了窗口高度,这时候就需要使用clientHeight来获得窗口高度!clientHeight效果基本一致。
反正我也说不明白那个浏览器更遵守规范,它们只会让你头疼。现在终于明白了为什么每次需求讨论都会头疼呢,写浏览器的大牛们对规范理解还有这么大偏差,何况同样的事由不同的人去描述,更何况里面还有鸟人呢!
分享到:
相关推荐
在探讨`clientHeight`, `offsetHeight`, `scrollHeight`, `clientWidth`, `offsetWidth`, 和 `scrollWidth`这些概念之前,我们首先需要理解它们在Web开发中的重要性。这些属性帮助开发者了解和控制网页在不同浏览器...
总结来说,offsetHeight和offsetWidth关注的是元素的边界,而clientHeight和clientWidth关注的是元素内容的大小,scrollHeight和scrollWidth关注的是元素内容的实际大小。理解这些概念,对于编写符合布局需求的CSS...
### 四种浏览器对_clientHeight、offsetHeight、scrollHeight、clientWidth、offsetWidth 和_scrollWidth 的解析 在前端开发过程中,我们经常会遇到需要获取页面元素尺寸的情况,这其中包括了元素的高度(`...
#### 一、scrollHeight 和 scrollWidth **scrollHeight** 和 **scrollWidth** 分别用来获取一个元素的滚动高度和滚动宽度。 - **scrollHeight**: 获取的是元素内容的高度加上其内边距(padding)和滚动条(如果有...
此外,`clientWidth`、`offsetWidth`和`scrollWidth`与上述三个属性类似,只是对应元素的宽度。理解这些属性的差异和用途,能够帮助开发者更好地控制网页元素的布局和交互,提高用户体验。 总的来说,`clientHeight...
首先,我们来了解几个重要的DOM属性,它们分别是:scrollHeight、clientHeight、offsetHeight、scrollWidth、clientWidth和offsetWidth。这些属性帮助我们获取元素内容的高度和宽度,以及元素自身整体的高度和宽度。...
1. `clientWidth`和`clientHeight`: - `clientWidth`表示一个元素内容区域的宽度,不包括滚动条、边框,但包括内边距(padding)。它等于元素的宽度加上左右内边距。 - `clientHeight`类似,表示内容区域的高度,...
本文将详细介绍`clientWidth`、`clientHeight`、`scrollWidth`、`scrollHeight`、`offsetWidth`、`offsetHeight`等属性及其应用场景。 #### `clientWidth` 和 `clientHeight` - **定义**:`clientWidth`用于获取...
具体来说,原本归属于 `document.body` 的一些属性(如 `clientHeight`, `clientWidth`, `offsetWidth`, `offsetHeight`, `scrollWidth`, `scrollHeight`, `scrollTop`, 和 `scrollLeft`)会被重新分配给 `document....
- `document.body.scrollWidth` 和 `document.body.scrollHeight` 分别表示网页的完整宽度和高度,即使超过了当前视口。 - `document.body.scrollTop` 和 `document.body.scrollLeft` 是用来获取或设置网页在垂直和...
此时,我们可以使用`offsetHeight`和`offsetWidth`来获取容器的完整尺寸,而使用`clientHeight`和`clientWidth`来获取容器的实际可视区域大小。同时,通过`scrollHeight`和`scrollWidth`我们可以知道容器中所有内容...
- `document.body.scrollWidth` 和 `document.body.scrollHeight` 分别表示网页的完整宽度和高度,即使内容超过当前视口。 - `document.body.scrollTop` 和 `document.body.scrollLeft` 用于获取当前滚动条的位置。 ...
} else if (document.body.scrollHeight > document.body.offsetHeight){ yScroll = document.body.scrollHeight; } else { yScroll = document.body.offsetHeight; } var windowHeight; if (self....
本文档主要介绍了一些常用的用于获取对象尺寸的属性,包括scrollWidth、clientWidth、offsetWidth等,并对它们之间的关系进行了说明。 首先,scrollWidth和scrollHeight属性用于获取元素的滚动宽度和滚动高度。...
- **`document.documentElement.clientWidth`** 和 **`document.documentElement.clientHeight`**:这两个属性返回的是文档元素的内部宽度和高度,不包含滚动条的宽度。 - **`document.body.clientWidth`** 和 **`...
- **`document.body.clientWidth`** 和 **`document.body.clientHeight`**:这两个属性分别表示文档体的宽度和高度,不包含边框和滚动条。 - **`document.body.offsetWidth`** 和 **`document.body.offsetHeight`**...
- **现代浏览器**:`offsetHeight`, `offsetWidth`, `clientHeight`, `clientWidth`, `scrollHeight`, `scrollWidth` 均支持。 - **Internet Explorer**:除了 `clientHeight` 和 `clientWidth` 外,其他属性也均...
bodySize[1] = (scrollHeight > clientHeight) ? scrollHeight : clientHeight; } return bodySize; } ``` 这个函数获取页面的整体尺寸,包括在存在滚动条的情况下。 5. 创建遮盖层 ```javascript function ...