通过JavaScript获取页面大小
一、使用document对象的属性设置网页窗口的大小:
网页可见区域宽: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:
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>
<body>
<table width="200" height="1500" border="1" bgcolor="#ccc">
<tr>
<td>此表格高度1500</td>
</tr>
</table>
<script language="javascript">
var s = '网页可见区域宽(clientWidth):'+ document.body.clientWidth;
s += '\r\n网页可见区域高(clientHeight):'+ document.body.clientHeight;
s += '\r\n网页可见区域高(clientHeight):'+ document.body.clientHeight +' (包括边线的宽)';
s += '\r\n网页可见区域高(clientHeight):'+ document.body.clientHeight +' (包括边线的宽)';
s += '\r\n网页正文全文宽(clientHeight):'+ document.body.clientHeight;
s += '\r\n网页正文全文高(clientHeight):'+ document.body.clientHeight;
s += '\r\n网页被卷去的高(scrollTop):'+ document.body.scrollTop;
s += '\r\n网页被卷去的左(scrollLeft):'+ document.body.scrollLeft;
s += '\r\n网页正文部分上(screenTop):'+ window.screenTop;
s += '\r\n网页正文部分左(screenLeft):'+ window.screenLeft;
s += '\r\n屏幕分辨率的高(height):'+ window.screen.height;
s += '\r\n屏幕分辨率的宽(width):'+ window.screen.width;
s += '\r\n屏幕可用工作区高度(availHeight):'+ window.screen.availHeight;
s += '\r\n屏幕可用工作区宽度(availWidth):'+ window.screen.availWidth;
alert(s);
</script>
</body>
</html>
clientHeight:在上述浏览器中, clientHeight 的含义是一致的,定义为网页内容可视区域的高度,即在浏览器中可以看到网页内容的高度,通常是工具条以下到状态栏以上的整个区域高度,与具体的网页页面内容无关。可以理解为,在屏幕上通过浏览器窗口所能看到网页内容的高度。
offsetHeight:关于offsetHeight,ie和firefox等不同浏览中意义有所不同,需要加以区别。在ie中,offsetHeight 的取值为 clientHeight加上滚动条及边框的高度;而firefox、netscape中,其取值为是实际网页内容的高度,可能会小于clientHeight。
scrollHeight:scrollHeight都表示浏览器中网页内容的高度,但稍有区别。在ie里为实际网页内容的高度,可以小于 clientHeight;在firefox 中为网页内容高度,最小值等于 clientHeight,即网页实际内容比clientHeight时,取clientHeight。
clientWidth、offsetWidth 和 scrollWidth 的含义与上述内容雷同,不过是高度变成宽度而已。
若希望clientHeight、offsetHeight和scrollHeight三个属性能取值一致的话,可以通过设置DOCTYPE,启用不同的解析器,如:<!DOCTYPE HTML PUBLIC "DTD XHTML 1.0 Transitional">,设置DOCTYPE后,这三个属性都表示实际网页内容的高度。
示例代码2:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>浏览器窗口大小</title>
<meta http-equiv="content-type" content="text/html; charset=gb2312"></meta>
</head>
<body>
<h2 align="center">浏览器窗口大小</h2><hr />
<form action="#" method="get" name="form1" id="form1">
<!--显示浏览器窗口的实际尺寸-->
clientHeight的值为: <input type="text" name="clientHeight" size="4"/><br />
offsetHeight的值为: <input type="text" name="offsetHeight" size="4"/><br />
scrollHeight的值为:<input type="text" name="scrollHeight" size="4"/><br />
</form>
<script type='text/javascript'>
window.onload = function()
{
var ch = document.body.clientHeight;
var sh = document.body.offsetHeight;
var ssh = document.body.scrollHeight;
//结果输出
document.form1.clientHeight.value= ch;
document.form1.offsetHeight.value= sh;
document.form1.scrollHeight.value= ssh;
}
</script>
</body>
</html>
示例代码3:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>请调整浏览器窗口</title>
<meta http-equiv="content-type" content="text/html; charset=gb2312"></meta>
</head>
<body>
<h2 align="center">请调整浏览器窗口大小</h2><hr />
<form action="#" method="get" name="form1" id="form1">
<!--显示浏览器窗口的实际尺寸-->
浏览器窗口的实际高度: <input type="text" name="availHeight" size="4"/><br />
浏览器窗口的实际宽度: <input type="text" name="availWidth" size="4"/><br />
</form>
<script type="text/javascript">
<!--
var winWidth = 0;
var winHeight = 0;
function findDimensions() //函数:获取尺寸
{
//获取窗口宽度
if (window.innerWidth)
winWidth = window.innerWidth;
else if ((document.body) && (document.body.clientWidth))
winWidth = document.body.clientWidth;
//获取窗口高度
if (window.innerHeight)
winHeight = window.innerHeight;
else if ((document.body) && (document.body.clientHeight))
winHeight = document.body.clientHeight;
//通过深入Document内部对body进行检测,获取窗口大小
if (document.documentElement && document.documentElement.clientHeight && document.documentElement.clientWidth)
{
winHeight = document.documentElement.clientHeight;
winWidth = document.documentElement.clientWidth;
}
//结果输出至两个文本框
document.form1.availHeight.value= winHeight;
document.form1.availWidth.value= winWidth;
}
findDimensions();
//调用函数,获取数值
window.onresize=findDimensions;
//-->
</script>
</body>
</html>
二、框架页中的高度自适应:
在实际使用iframe的过程中,会遇到iframe高度的问题。由于被嵌套的页面大小不固定而出现滚动条。采用JavaScript来控制iframe元素的高度,让iframe高度自适应。另外,由于JavaScript对不同域名下权限的控制,会遇到同域、跨域的情况。
控制id为“iframeid”的iframe的高度,通过JavaScript取得被嵌套页面最终高度,然后在主页面进行设置来实现。
function SetCwinHeight()
{
var iframeid=document.getElementById("iframeid"); //iframe id
if (document.getElementById)
{
if (iframeid && !window.opera)
{
if (iframeid.contentDocument && iframeid.contentDocument.body.offsetHeight){
iframeid.height = iframeid.contentDocument.body.offsetHeight;
}
else if(iframeid.Document && iframeid.Document.body.scrollHeight)
{
iframeid.height = iframeid.Document.body.scrollHeight;
}
}
}
}
</script>
页面框架代码:
2、不同域下的Iframe高度自适应
主页面与被嵌套页面不同域时,涉及到权限问题,要规避JavaScript的跨域限制。
具体操作,可参考以下资料中的实验性实例代码,可行性有待考证。
参考:①.JS获取浏览器窗口大小 获取屏幕,浏览器,网页高度宽度(http://hi.baidu.com/liuleihai/blog/item/d7f18182bb817d97f703a60a.html)
②.Iframe高度自适应(http://www.ccvita.com/376.html)