JS 中根据iframe子页面自动iframe高度

 注意为使页面有更好的兼容性,在使用以下代码前,请将aspx页中头部的<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">删除,至于居中情况结合<center> …… </center>标签来完成

在实际的项目进行中,很多地方可能由于历史原因不得不去使用iframe,包括目前正火热的应用开发也是如此。

随之而来的就是在实际使用iframe中,会遇到iframe高度的问题,由于被嵌套的页面长度不固定而显示出来的滚动条,不仅影响美观,还会对用户操作带来不便。于是自动调整iframe的高度就成为本文的重点。

采用JavaScript来控制iframe元素的高度是iframe高度自适应的关键,同时由于JavaScript对不同域名下权限的控制,引发出同域、跨域两种情况。

同域时Iframe高度自适应
下面的代码兼容IE/Firefox浏览器,控制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" onload="Javascript:SetCwinHeight()" height="1" frameborder="0" src="kimi.php"></iframe> 


代码来自http://www.ccvita.com/376.html

方法2

    在网页<body>标签之前插入以下代码:

<script language="javascript">
function turnHeight(iframe)  
{  
    var frm = document.getElementById(iframe);  
    var subWeb = document.frames ? document.frames[iframe].document : frm.contentDocument;  
    if(frm != null && subWeb != null)   
    { frm.height = subWeb.body.scrollHeight + 20;}  
}
</script>

    调用代码如下:

<IFRAME id=iframe1 src="/main/sf.php" frameBorder=0 width="986" scrolling=no onload="turnHeight('iframe1');" height="100%"></IFRAME>

    这样就能解决火狐iframe自适应高度的问题,而且兼容IE。

    注意,iframe页面中的元素,不能使用float属性和display属性,否则在火狐中获取到的iframe高度将为0,导致自适应高度失败。

 

posted @ 2013-07-12 16:49  酒沉吟  阅读(1867)  评论(0编辑  收藏  举报