Featured image of post iframe自适应高度设置方法

iframe自适应高度设置方法

摘要:为了更好运维和隔离影响,一般会把网站的公用模块抽取独立出来(如博客中常见的评论系统),通过iframe的方式集成到主页面。iframe集成的最大问题是页面的一致性保障,如样式风格一致、iframe内容高度能自适应(不能出现多个滚动条)等……

思路说明

  • iframe的宽度伸张铺满100%
  • 主页面加载完成之后,注册定时任务:每隔250毫秒 去检测一下iframe的高度是否变化,并重新调整iframe高度(如提交评论,iframe的高度会变高,此时主页面会自动调整)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0,user-scalable=no">
    <title>ntopic.cn</title>
    <style type="text/css">
        .iframe-wrap {
            position: relative;
            box-sizing: border-box;
            width: 100%;
            max-width: unset;
            margin-left: auto;
            margin-right: auto;
        }

        .iframe {
            color-scheme: light;
            position: absolute;
            left: 0;
            right: 0;
            width: 1px;
            min-width: 100%;
            max-width: 100%;
            height: 100%;
            border: 0;
        }
    </style>
    <script type="text/javascript">
        function onWindowLoad() {
            window.setInterval("reInitIframe()", 250);
        }

        function reInitIframe() {
            const iframe = document.getElementById("iframe");
            try {
                const newHeight = iframe.contentWindow.document.documentElement.scrollHeight;
              	iframe.style.height = newHeight + "px";
                document.getElementById("iframeWrap").style.height = newHeight + "px";
            } catch (e) {
            }
        }
    </script>
</head>
<body onload="onWindowLoad();">
<div id="iframeWrap" class="iframe-wrap" style="height: 269px;">
    <iframe id="iframe" class="frame" src="https://ntopic.cn" loading="lazy" style="width:100%;" frameborder="0" scrolling="no"></iframe>
</div>
</body>
</html>
邮箱:obullxl@qq.com
QQ:303630027(老牛啊)
微信:imxulin(奔跑的蜗牛)
支付宝:obullxl@163.com