iframe 自适应高度的六种方法介绍

以iframe自适应高度的六种方法介绍

方法一:使用onload事件

这是最简单的方法,可以在iframe加载完毕后自适应高度。

示例代码:

  
    <iframe src=\"\" onload=\"this.style.height=this.contentDocument.body.scrollHeight +\'px\' \" ></iframe>
  

方法二:使用postMessage

使用postMessage可以在iframe中嵌入脚本,通过postMessage来传递高度数据。

示例代码:

  
    // 在iframe中添加脚本
    <script>
      window.addEventListener(\'message\', function(e) {
        if (e.origin !== \' return;
        var height = e.data;
        document.querySelector(\'iframe\').style.height = height + \'px\';
      });
    </script>

    // 在父页面中发送高度数据
    <iframe src=\"\"></iframe>
    <script>
      var iframe = document.querySelector(\'iframe\');
      window.setInterval(function() {
        iframe.contentWindow.postMessage(iframe.contentDocument.body.scrollHeight, \'
      }, 1000);
    </script>
  

方法三:使用MutationObserver

MutationObserver可以观察到DOM节点的变化,从而自适应iframe高度。

示例代码:

  
    // 在iframe中添加脚本
    <script>
      var observer = new MutationObserver(function(mutations) {
        var height = document.body.scrollHeight;
        window.parent.postMessage(height, \'
      });
      observer.observe(document.body, { attributes: true, childList: true, characterData: true });
    </script>

    // 在父页面中接收高度数据
    <iframe src=\"\"></iframe>
    <script>
      window.addEventListener(\'message\', function(e) {
        if (e.origin !== \' return;
        var height = e.data;
        document.querySelector(\'iframe\').style.height = height + \'px\';
      });
    </script>
  

方法四:使用setInterval

使用setInterval可以定时检查iframe高度是否变化,从而自适应iframe高度。

示例代码:

  
    <iframe src=\"\" id=\"myiframe\"></iframe>
    <script>
      function resizeIframe() {
        var iframe = document.getElementById(\'myiframe\');
        iframe.style.height = iframe.contentWindow.document.body.scrollHeight + \'px\';
      }
      window.setInterval(resizeIframe, 1000);
    </script>
  

方法五:使用resize事件

使用resize事件可以在iframe大小变化时自适应iframe高度。

示例代码:

  
    <iframe src=\"\" id=\"myiframe\" onload=\"resizeIframe()\"></iframe>
    <script>
      function resizeIframe() {
        var iframe = document.getElementById(\'myiframe\');
        iframe.style.height = iframe.contentWindow.document.body.scrollHeight + \'px\';
      }
      window.addEventListener(\'resize\', resizeIframe);
    </script>
  

方法六:使用IntersectionObserver

使用IntersectionObserver可以观察到iframe是否进入视口,从而自适应iframe高度。

示例代码:

  
    <iframe src=\"\" id=\"myiframe\"></iframe>
    <script>
      var observer = new IntersectionObserver(function(entries) {
        entries.forEach(function(entry) {
          if (entry.isIntersecting) {
            var iframe = document.getElementById(\'myiframe\');
            iframe.style.height = iframe.contentWindow.document.body.scrollHeight + \'px\';
            observer.unobserve(entry.target);
          }
        });
      });
      observer.observe(document.getElementById(\'myiframe\'));
    </script>
  

声明:所有白马号原创内容,未经允许禁止任何网站及个人转载、采集等一切非法引用。本站已启用原创保护,有法律保护作用,否则白马号保留一切追究的权利。发布者:白马号,转转请注明出处:https://www.bmhysw.com/article/42155.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
白马号白马号

相关推荐

  • windows内存诊断工具有用吗(win10多种调用内存检测程序方法)

    Windows 10内存诊断程序一般都是被动运行的。当系统运行期间出现内存错误,Windows将自动识别错误并弹出内存诊断对话框要求选择(图1)。其实,除了系统自动要求执行这一检测外,平时,我们也可以用多种方法主动调用内存检测程序。那么,如何实现主动调用呢? 1. 用同一命令在不同窗口中调用 首先可以使用“运行”对话框。按下Win+R组合键启动运行框,输入m…

    2022-08-16 投稿
    00
  • 如何在谷歌浏览器登录账号(谷歌浏览器账号登录步骤和操作)

    如何在谷歌浏览器登录账号 步骤一:打开谷歌浏览器 步骤二:点击右上角的“登录”按钮 步骤三:输入账号和密码 步骤四:完成登录 步骤一:打开谷歌浏览器 首先,打开你的电脑,找到桌面上的谷歌浏览器图标,双击打开。 步骤二:点击右上角的“登录”按钮 在谷歌浏览器的右上角,你会看到一个“登录”按钮。点击这个按钮,进入登录页面。 步骤三:输入账号和密码 在登录页面,输…

    2023-05-26
    00
  • MAC系统硬盘文件夹详解

    MAC系统硬盘文件夹详解 了解MAC系统硬盘文件夹 常见的MAC系统硬盘文件夹 如何打开MAC系统硬盘文件夹 如何管理MAC系统硬盘文件夹 了解MAC系统硬盘文件夹 MAC系统硬盘文件夹是指存储在MAC电脑硬盘上的文件夹,包括系统文件夹和用户文件夹。系统文件夹包含了MAC操作系统的核心文件,用户文件夹则是用户存储个人文件和应用程序的地方。 常见的MAC系统硬…

    2023-07-04
    00
  • Mac系统要怎么重装?mac重装系统教程

    Mac系统重装教程 备份重要数据 下载系统安装文件 制作启动盘 重启电脑并安装系统 备份重要数据 在重装系统之前,一定要备份你的所有重要数据。你可以将数据存储在外部存储设备中,例如移动硬盘或云存储。 注意:重装系统会清除所有的数据,因此务必备份好你需要的所有文件和数据。 下载系统安装文件 在重装系统之前,需要下载安装文件。你可以从App Store中下载,也…

    2023-07-04
    00
  • AppData是什么文件夹?AppData可以删除吗?

    AppData是什么文件夹?AppData可以删除吗? 介绍 AppData是什么? 为什么不可以删除AppData? 如何清理AppData? 介绍 在Windows中,有一个名为AppData的文件夹,它包含了许多应用程序的数据和设置。很多人可能会想知道AppData到底是什么,以及是否可以删除它。本文将会回答这些问题。 AppData是什么? AppD…

    2023-06-21
    00

联系我们

QQ:183718318

在线咨询: QQ交谈

邮件:183718318@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信