iframe高度自适应撑开

一、什么是iframe标签?

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

例如:

<iframe src="http://www.example.com" height="500"></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 库:

<script src="iframeResizer.min.js"></script>

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

<script src="iframeResizer.contentWindow.min.js"></script>

<script>
  iFrameResize({
    heightCalculationMethod: 'taggedElement',
    checkOrigin: false
  });
</script>

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

2. iframe-auto-height

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

<script src="https://cdn.jsdelivr.net/gh/kennyyu/iframe-auto-height/dist/iframe-auto-height.min.js"></script>

<script>
  iframeAutoHeight.init({
    minHeight: 200
  });
</script>

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

四、总结

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

原创文章,作者:YCTET,如若转载,请注明出处:https://www.506064.com/n/371854.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
YCTETYCTET
上一篇 2025-04-23 18:08
下一篇 2025-04-23 18:08

相关推荐

  • HTML让背景图片不受自适应影响的方法

    要让背景图片不受自适应影响,可以使用CSS的background-size属性来控制背景图的大小,同时也可以使用background-position属性来控制背景图在元素中的位置…

    编程 2025-04-27
  • JavaScript中获取滚动条高度的多种方法详解

    一、直接获取滚动条高度 window.pageYOffset document.documentElement.scrollTop || document.body.scrollT…

    编程 2025-04-25
  • JS中获取窗口高度的方法

    JS可以通过多种方式获取窗口高度,本文将从多个方面分析JS获取窗口高度的方法,并提供对应的代码示例。 一、JS获取窗口大小 JS可以使用window对象的innerWidth和in…

    编程 2025-04-24
  • CSS设置背景图片大小自适应

    一、CSS设置背景图片大小 在CSS中,我们可以通过background-size属性来设置背景图片的大小。该属性可以设置为一个具体的像素值,也可以使用cover或者contain…

    编程 2025-04-23
  • 设置input的高度和宽度

    一、input的基本概念 input是在HTML中最基本的表单控件之一,用于收集用户输入的数据。通过设置不同的属性,可以让input的外观和行为发生变化。input控件的高度和宽度…

    编程 2025-04-23
  • 深入了解iframe参数

    一、src参数 src参数是什么 src参数指定了iframe所要加载的页面的URL或文件的URL。当使用此参数时,路径必须是绝对路径。 src参数示例代码 <iframe …

    编程 2025-04-23
  • Vue iframe 组件的详细阐述

    一、什么是 Vue iframe 组件? Vue iframe 组件是一个 Vue.js 插件,可以轻松地在 Vue.js 项目中嵌入内部或外部网页。 该组件提供了一个「ifram…

    编程 2025-04-23
  • React IFrame详解

    一、IFrame基础使用 IFrame是能够在一个页面中引入另一个页面的方法。在React中,使用iframe标签能够实现IFrame的功能。 import React from …

    编程 2025-04-12
  • iframe 加载完成回调详解

    一、什么是 iframe 加载完成回调 在网页中,我们经常会需要使用 iframe 来加载外部页面,比如我们要在自己的网页中嵌入另一个网站的网页,或者是需要加载一些异步加载的内容。…

    编程 2025-04-02
  • 如何实现ScrollView高度自适应

    我们在移动端开发中经常会遇到需要对ScrollView的高度进行自适应的情况,以便能够展示不同大小的内容。下面将从多个方面介绍如何实现ScrollView高度自适应。 一、Scro…

    编程 2025-02-25

发表回复

登录后才能评论