全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

iframe高度自适应撑开

发布时间:2023-11-23 12:35:38
发布人:xqq

一、什么是iframe标签?

iframe(英文全称 inline frame)是 HTML 语言中的一种标签用于在当前HTML文档中插入另外一个HTML文档。通过使用 iframe 标签,可以在当前页面中插入其他网页。

例如:



以上代码可以在当前网页中插入一个高度为500像素、指向http://www.example.com的网页。

二、iframe自适应高度有哪些实现方式?

下面介绍几种iframe自适应高度的实现方式:

1. JS监听iframe高度

在子页面中,使用如下 js 代码监控子页面高度的变化,将其高度赋值给iframe标签:


window.parent.document.getElementById("iframe").height = document.body.scrollHeight;

其中,"iframe"是父页面iframe标签的ID,通过该方式可以实现高度的自适应。

不过,该方法在 iframe 中有超过一个滚动条(scroll bar)的时候会失效,如在子页面中存在垂直滚动条,将会影响高度计算。

2. PostMessage

在子页面中,使用 postMessage 方法向父页面发送高度变化消息,然后在父页面中监听高度变化消息并对 iframe 进行高度赋值。

子页面中 JS 代码:


window.parent.postMessage(document.body.scrollHeight, "*");

父页面中 JS 代码:


window.addEventListener("message", function(event) {
  var iframe = window.document.getElementById("iframe");
  iframe.height = event.data;
}, false);

3. IntersectionObserver

使用 IntersectionObserver 可以实现监听 DOM 节点的可见性变化。当 iframe 从隐藏变为可见或可见变为隐藏时,会触发回调函数并计算出新的高度赋值给 iframe。

实现代码如下:


var intersectionObserver = new IntersectionObserver(function(entries, observer) {
  entries.forEach(function(entry) {
    if (entry.intersectionRatio > 0) {
      var iframe = entry.target;
      iframe.height = iframe.contentWindow.document.body.scrollHeight + "px";
      observer.unobserve(iframe);
    }
  });
});

var iframes = document.getElementsByTagName("iframe");
for (var i = 0; i < iframes.length; i++) {
  intersectionObserver.observe(iframes[i]);
}

三、使用第三方插件实现自适应高度

除了手动实现iframe自适应高度,还可以使用一些已经开发好的插件实现该功能。下面列举一些常用的插件:

1. iFrame Resizer

iFrame Resizer是一个独立的 JavaScript 库,通过监听 iframe 的 contentWindow 属性上的 message 事件,实现了父窗口自适应 iframe 高度的功能。

使用方法如下:

在父页面中引入 iFrame Resizer 库:



在子页面中使用如下 js 代码初始化插件:





其中 heightCalculationMethod 指定了高度计算方法,taggedElement 表示使用指定标签的高度计算;而 checkOrigin 表示是否需要验证来源。

2. iframe-auto-height

iframe-auto-height 是一个基于 iFrame Resizer 开发的插件,可以自适应 iframe 高度,使用方法如下:





其中 minHeight 表示 iframe 最小高度,当高度小于该值时插件不会缩小至该值。

四、总结

以上介绍了多种 iframe 自适应高度的实现方式,不同方式都有各自的优缺点,具体可根据实际情况进行选择。

iframe高度自动撑开

相关文章

linux下挂载ipsan,linux挂载lv

linux下挂载ipsan,linux挂载lv

2023-11-23
WebSocket面试题详解

WebSocket面试题详解

2023-11-23
MD516位和32位区别详解

MD516位和32位区别详解

2023-11-23
List.foreach详解

List.foreach详解

2023-11-23

最新文章

武汉新媒体行业公司排名

武汉新媒体行业公司排名

2023-11-01
武汉新媒体就业现状好吗

武汉新媒体就业现状好吗

2023-11-01
武汉全媒体行业发展现状及趋势

武汉全媒体行业发展现状及趋势

2023-10-31
武汉全媒体现状

武汉全媒体现状

2023-10-31
在线咨询 免费试学 教程领取