iframe高度自适应小记

问题:当iframe第一次加载的是一个比较长的页面,第二次加载一个比较短的页面的时候,无法实现高度自适应,会出现滚动条,很难看的好伐。。。

<iframe id="myIframe" name="myIframe" width="100%" height="auto" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" 
  allowtransparency
="true" onLoad="iFrameHeight()"> </iframe>

看到问题那就写个自适应的方法吧,代码如下:

function iFrameHeight() {   
            var ifm= document.getElementById("myIframe");   
            var subWeb = $('#myIframe').prop('contentWindow').document;  
       var ch = subWeb.body.clientHeight-25;
if(ifm != null && subWeb != null) { //ifm.height = ch.toString(); 这个也可以 //ifm.width = subWeb.body.scrollWidth; jQuery("#myIframe").css("height",ch.toString()); } }
注意:这个属性height是string类型的不是Number,你直接用ch赋值火狐和webkit不会报错的,但是IE会报错,导致出现一些状况

然而还是木有个卵用。。。

在调试的过程发现子页面的高度有问题哇,。。。

原因是代码中引入别的css

body{
      height:auto !important;       
}

这样子页面的高度就随内容啦,谁也别想动

可是6个子页面有俩还是不行,iframe的高度只有70,想到页面中有ajax,有可能是内容没有撑起来,自适应代码就执行了,所以ajax加上async:false

好啦,所有问题都解决啦

提交代码

问题还是记录一下好

posted @ 2016-03-09 11:27  暗夜心慌方  阅读(196)  评论(0编辑  收藏  举报