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)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
白马号白马号

相关推荐

  • 电脑打印机脱机怎么重新连接win7(教你一招轻松解决)

    大家在打印文件时经常出现脱机问题,导致打印机脱机主要是由于“打印任务过多导致脱机”,“打印机驱动异常”,“打印机电缆松动或损坏”这三个原因所导致的,接下来我就详细讲一下这个问题的解决方法。     打印任务过多导致脱机 所谓的“打印任务过多”,就是因为一次打印大量的文档而导致打印机脱机问题,其工作原理就像电脑运行多个程序导致的死机一样。 …

    2022-05-23 投稿
    00
  • 电脑mac地址在哪看(台式机mac地址怎么查)

    今天教大家如何查看计算机IP地址以及MAC地址。 计算机的IP地址一旦被分配,可以说是固定不变的,因此,查询出计算机的IP地址,在一定程度上就实现了黑客入侵的前提工作。使用ipconfig命令可以获取本地计算机的IP地址和物理地址,想玩电脑专业或更深入的都要会这个知识。 具体的操作步骤如下。 Step 01右击【开始】按钮,在弹出的快捷菜单中执行【运行】命令…

    2022-04-05 投稿
    00
  • 柯尼卡美能达打印机怎么样(柯尼卡美能达打印机评测)

    引言: 在现代企业和家庭中,打印机成为了不可或缺的设备之一。选择一款适合自己需求的打印机至关重要。柯尼卡美能达作为一个知名的打印机制造商,其产品在市场上得到了广泛关注。本文将针对柯尼卡美能达打印机的质量进行评测。 1. 品牌背景 柯尼卡美能达是两家历史悠久的公司合并后的产物,具有丰富的影像和打印经验。这家公司在全球范围内为客户提供了广泛的产品和服务,覆盖了从…

    2023-10-05
    00
  • 电脑运行wegame很卡怎么回事(开了wegame感觉很卡的原因)

    Hello,大家好,我是那个又菜又爱玩的舞文。由于近两年时间中,在WeGame玩游戏的朋友逐渐增多,舞文也在这个平台上买了那么几款游戏,而中途确实也有遇到WeGame平台和游戏安装较慢的问题,所以对相关情况进行了详细了解。最终,总结了下面这些可能导致WeGame安装速度太慢的原因,以及一些可以加快安装速度的技巧。 原因一、客户端占用空间大,官网客户端其实是下…

    2022-05-05 投稿
    00
  • Win10写入注册表提示错误怎么办?Win10写入注册表失败解决方法

    Win10写入注册表提示错误怎么办?Win10写入注册表失败解决方法 写入注册表失败的原因 解决Win10写入注册表失败的方法 方法一:运行注册表编辑器 方法二:更改注册表项权限 写入注册表失败的原因 在使用Win10系统过程中,我们可能会遇到写入注册表失败的情况。这种情况通常是由于以下原因造成的: 当前用户没有足够的权限来更改注册表。 注册表项受到保护,无…

    2023-07-25
    00

联系我们

QQ:183718318

在线咨询: QQ交谈

邮件:183718318@qq.com

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

关注微信