让iframe高度自适应

来源:互联网 发布:软件试用时间破解 编辑:程序博客网 时间:2024/05/01 14:28

iframe早已经替代了frameset成为了框架应用的主要标签,但是在目前的布局方式中iframe却也很难控制,目前常见于后台管理界面布局应用,如果你不会ajax那iframe在你的设计应用中,会经常用到。

在应用中,无非两种自适应状态,横向没有什么说的,window宽度100%;
纵向有两种,一种根据window高度100%(除非删除规范声明,应用table布局,但时下讲究的就是标准,可以用postion法进行定位,这里不说明了),另一种是根据内容高度进行自适应(我们说的是内部嵌套iframe的情况下)。

给iframe的高度很难进行设定,需要考虑window和iframe纵向滚动条的问题,怎么也不能让客户用两个滚动条,选择留下window滚动条,而iframe的高度等于它所调用页面的高度,这样iframe的滚动条就不会出现;

这样我们在iframe页面(通常是首页),加入以下代码

function setHeight(){
var iframe = document.getElementById("frame-right");
    try{
     var aHeight = iframe.contentWindow.document.body.scrollHeight;
     var bHeight = iframe.contentWindow.document.documentElement.scrollHeight;
     var height = Math.max(aHeight, bHeight);//取最高值;
     iframe.height =  height;
    }catch (e){}
   }
   window.setInterval("setHeight()", 200);//执行的间隔时间;


这样iframe就会根据它所调用的网页高度来进行变化;

在应用中,还发现了这样的问题,所调用页面内容会动态加载其它内容,所调用网页高度出现变化,iframe没有刷新,于是它的滚动条又出现了;以上代码同时解决了该问题;
ie,ff下测试没问题。

注意:包含该iframe的div高度值不要设置,iframe的高度值不要设置。在应用中遇到了这样的问题,在点击左侧链接(左右结构,两个iframe)过快的情况下(也可能是其它原因引起),右侧载入的页面宽度溢出为,窗口的100%宽度,这种现象只出现在ie浏览器中,所以在应用中还是把宽度的自适应加入。

function setAuto(){
var iframe = document.getElementById("frame-right");
    try{
     var aHeight = iframe.contentWindow.document.body.scrollHeight;
     var bHeight = iframe.contentWindow.document.documentElement.scrollWidth;
     var aWidth= iframe.contentWindow.document.body.scrollHeight;
     var bWidth = iframe.contentWindow.document.documentElement.scrollWidth;
     var height = Math.max(aHeight, bHeight);//取最高值;
     var width = Math.max(aWidth, bWidth);//取最高值;
     iframe.height =  height;
     iframe.width=  width
    }catch (e){}
   }
   window.setInterval("setAuto()", 200);//执行的间隔时间;

 

原创粉丝点击