跨域的IFrame自适应高度

项目网站中需要嵌入合作网站的页面,这就需要页面的自适应高度变化,并且是跨域的。在网上看了许多资料,加上自己的

 

实践,终于实现了跨域的IFrame自适应高度。如下:

 

 

首先,我的页面a.html需要引入对方的b.html,在这里运用iframe方式实现页面的套用

 

a.html页面的主要代码如下:

 

Html代码  收藏代码
  1. <BODY>  
  2.   <iframe width="100%" id="a_iframe" name="a_iframe" src="http://对方域名/b.html"   
  3.     frameborder="no" border="0px" scrolling="no" allowtransparency="yes" ></iframe>  
  4. </BODY>  

a.html页面只是用来引入对方页面的一个简单页面 这就不多做介绍。

 

然后,最好在a.html同一级目录下,创建一个agent.html页面,该页面用来得到对方通过js传递过来的参数,

根据高度参数来调整a.html中的a_iframe的高度,主要代码如下:

 

Js代码  收藏代码
  1. <script type="text/javascript">  
  2. //得到a.html中的a_iframe  
  3. var a_iframe = parent.parent.document.getElementById("a_iframe");  
  4. //<span style="">location.hash用来获取页面的标签值</span>  
  5.   
  6.   
  7. ,这个值通过b.html中的js函数改变。包括height属性  
  8. var hash_url = window.location.hash;   
  9. //得到b.html传递过来的height属性  
  10. var hash_height = hash_url.split("#")[1]+"px";  
  11. //调整a_iframe的height,达到自适应   
  12. a_iframe.height = hash_height;  
  13. </script>  

 

最后,对方的页面(b.html),让对方在b.html中加入以下javascript代码

 

Js代码  收藏代码
  1. <iframe id="b_iframe"  width="100%"  src="http://我的域名/../agent.html" style="display:none">  
  2. </iframe>   
  3. <script type="text/javascript">     
  4. var b_height = Math.max(document.body.scrollHeight,document.body.clientHeight);     
  5. var b_iframe = document.getElementById("b_iframe");     
  6. b_iframe.src =  b_frame.src+"#"+b_height;  
  7. </script>  

 

通过 Math.max(clientHeight,scrollHeight)比较网页可见区域高,网页正文全文高这两者得到其中的较大的值后,

iframe将这个height通过src传递到我的agent.html,这样a.html中的Iframe就能自适应对方的b.html高度了。这里在IE下测试的没问题,其它浏览器没测试。

 

   在实现这个功能的过程中,在网上发现了一段很有用的获取页面高度的js,在这里也记录、引用下:

 

Js代码  收藏代码
  1. < script>     
  2.   var   strInfo=" " ;    
  3.   strInfo+=" \r\n网页可见区域宽:" +document.body.clientWidth;    
  4.   strInfo+=" \r\n网页可见区域高:" +document.body.clientHeight;    
  5.   strInfo+=" \r\n网页可见区域宽:" +document.body.offsetWidth+" (包括边线的宽)" ;    
  6.   strInfo+=" \r\n网页可见区域高:" +document.body.offsetHeight+" (包括边线的宽)" ;    
  7.   strInfo+=" \r\n网页正文全文宽:" +document.body.scrollWidth;    
  8.   strInfo+=" \r\n网页正文全文高:" +document.body.scrollHeight;    
  9.   strInfo+=" \r\n网页被卷去的高:" +document.body.scrollTop;    
  10.   strInfo+=" \r\n网页被卷去的左:" +document.body.scrollLeft;    
  11.   strInfo+=" \r\n网页正文部分上:" +window.screenTop;    
  12.   strInfo+=" \r\n网页正文部分左:" +window.screenLeft;    
  13.   strInfo+=" \r\n屏幕分辨率的高:" +window.screen.height;    
  14.   strInfo+=" \r\n屏幕分辨率的宽:" +window.screen.width;    
  15.   strInfo+=" \r\n屏幕可用工作区高度:" +window.screen.availHeight;    
  16.   strInfo+=" \r\n屏幕可用工作区宽度:" +window.screen.availWidth;    
  17.   window.confirm(strInfo);    
  18.   < /script>  

 

posted on 2012-08-16 11:28  lzf0514  阅读(376)  评论(0编辑  收藏  举报

导航