Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 239|回复: 0

[默认分类] 总结iframe高度自适应,自适应子页面高度

[复制链接]
  • TA的每日心情
    开心
    2021-12-13 21:45
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2018-7-8 10:22:34 | 显示全部楼层 |阅读模式

    在网上找了很多iframe的高度自适应,发现很多兼容性都不是很好,于是自己总结了一下。
    页面HTML节点上要有下面红色部分,不然ie浏览器会无限递增
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    1. <iframe id="mainFrame" name="mainFrame" scrolling="no" src="Index.aspx"
    2.             frameborder="0" style="padding: 0px; width: 100%; height: 1000px;"></iframe>
    复制代码


    1. 调用   
    2. <script type="text/javascript">
    3.         startInit("mainFrame", 560);
    4. </script>
    复制代码

      

      
       
      
    1. var browserVersion = window.navigator.userAgent.toUpperCase();
    2. var isOpera = browserVersion.indexOf("OPERA") > -1 ? true : false;
    3. var isFireFox = browserVersion.indexOf("FIREFOX") > -1 ? true : false;
    4. var isChrome = browserVersion.indexOf("CHROME") > -1 ? true : false;
    5. var isSafari = browserVersion.indexOf("SAFARI") > -1 ? true : false;
    6. var isIE = (!!window.ActiveXObject || "ActiveXObject" in window);
    7. var isIE9More = (! -[1, ] == false);
    8. function reinitIframe(iframeId, minHeight) {
    9.     try {
    10.         var iframe = document.getElementById(iframeId);
    11.         var bHeight = 0;
    12.         if (isChrome == false && isSafari == false)
    13.             bHeight = iframe.contentWindow.document.body.scrollHeight;
    14.         var dHeight = 0;
    15.         if (isFireFox == true)
    16.             dHeight = iframe.contentWindow.document.documentElement.offsetHeight + 2;
    17.         else if (isIE == false && isOpera == false)
    18.             dHeight = iframe.contentWindow.document.documentElement.scrollHeight;
    19.         else if (isIE == true && isIE9More) {//ie9+
    20.             var heightDeviation = bHeight - eval("window.IE9MoreRealHeight" + iframeId);
    21.             if (heightDeviation == 0) {
    22.                 bHeight += 3;
    23.             } else if (heightDeviation != 3) {
    24.                 eval("window.IE9MoreRealHeight" + iframeId + "=" + bHeight);
    25.                 bHeight += 3;
    26.             }
    27.         }
    28.         else//ie[6-8]、OPERA
    29.             bHeight += 3;
    30.         var height = Math.max(bHeight, dHeight);
    31.         if (height < minHeight) height = minHeight;
    32.         iframe.style.height = height + "px";
    33.     } catch (ex) { }
    34. }
    35. function startInit(iframeId, minHeight) {
    36.     eval("window.IE9MoreRealHeight" + iframeId + "=0");
    37.     window.setInterval("reinitIframe("" + iframeId + ""," + minHeight + ")", 100);
    38. }
    复制代码
      
       
      

      
    测试发现兼容浏览器ie6-11、chrome、firefox、opera、Safari、傲游云浏览器、360浏览器,兼容性更好,其他未测试,如发现高度不能自适应,请留言给我。
    参考http://www.kuqin.com/webpagedesign/20080516/8536.html
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-24 01:51 , Processed in 0.427155 second(s), 46 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表