通过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:

ExpandedBlockStart.gif View Code
<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
< 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 >
  在IE、FireFox、Netscape等不同的浏览器里,对于document.body 的 clientHeight、offsetHeight 和 scrollHeight 有着不同的含义,比较容易搞混,现整理一下相关的内容:

  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:

<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
< 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:

<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
< 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对不同域名下权限的控制,会遇到同域、跨域的情况。

  1、同域下的Iframe高度自适应
  控制id为“iframeid”的iframe的高度,通过JavaScript取得被嵌套页面最终高度,然后在主页面进行设置来实现。
<script type="text/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> 

 页面框架代码:

<iframe width="100%" id="iframeid" οnlοad="Javascript:SetCwinHeight()" height="1" frameborder="0" src="demo.html"></iframe>

   2、不同域下的Iframe高度自适应

  主页面与被嵌套页面不同域时,涉及到权限问题,要规避JavaScript的跨域限制。

  具体操作,可参考以下资料中的实验性实例代码,可行性有待考证。

参考:①.JS获取浏览器窗口大小 获取屏幕,浏览器,网页高度宽度(http://hi.baidu.com/liuleihai/blog/item/d7f18182bb817d97f703a60a.html)

   ②.Iframe高度自适应(http://www.ccvita.com/376.html)

   ③.关于iframe页面高度自适应的问题( http://www.cnblogs.com/sirzxj/archive/2012/04/28/2475249.html)

 

转载于:https://www.cnblogs.com/dudumao/archive/2012/06/04/2534182.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值