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
好啦,所有问题都解决啦
提交代码
问题还是记录一下好