温馨提示×

iframe窗口高度自适应怎么实现

小亿
103
2023-08-11 10:34:44
栏目: 编程语言

要实现iframe窗口的高度自适应,可以使用以下方法:

1. 使用JavaScript自动调整高度:在iframe的内容页面中,通过JavaScript来获取内容的实际高度,然后将该高度应用于iframe的高度属性。这可以使用以下代码实现:

<script>

  function resizeIframe() {

    var iframe = document.getElementById('my-iframe');

    iframe.style.height = iframe.contentWindow.document.body.scrollHeight + 'px';

  }

</script>

<iframe id="my-iframe" src="embedded-page.html" onload="resizeIframe();" frameborder="0"></iframe>

在上述代码示例中,resizeIframe()函数会在iframe加载完成后被调用,并计算出内容的实际高度并将其应用到iframe的高度。

2. 使用postMessage通信:如果您无法修改嵌入页面的内容或使用JavaScript来控制iframe的高度,可以使用postMessage进行跨域通信。嵌入页面和父页面之间可以通过postMessage传递消息,以便调整iframe的高度。

以下是一个简单的示例(假设嵌入页面和父页面在同一域名下):

在嵌入页面中的脚本:

<script>

  // 发送当前页面的高度给父页面

  function sendHeight() {

    var height = document.body.scrollHeight;

    parent.postMessage({ height: height }, '*');

  }

  // 监听父页面发送的消息

  window.addEventListener('message', function(event) {

    if (event.data === 'resize') {

      sendHeight();

    }

  });

</script>

在父页面中的脚本:

<script>

  // 监听嵌入页面发送的消息

  window.addEventListener('message', function(event) {

    if (event.data.height) {

      var iframe = document.getElementById('my-iframe');

      iframe.style.height = event.data.height + 'px';

    }

  });

  // 调整iframe高度

  function resizeIframe() {

    var iframe = document.getElementById('my-iframe');

    iframe.contentWindow.postMessage('resize', '*');

  }

  // 在窗口大小变化时调整iframe高度

  window.addEventListener('resize', resizeIframe);

</script>

<iframe id="my-iframe" src="embedded-page.html"></iframe>

上述代码示例中,嵌入页面通过sendHeight()函数将其内容的高度传递给父页面。父页面监听嵌入页面发送的消息,并根据接收到的高度值调整iframe的高度。还可以通过监听窗口大小变化事件来实时调整iframe的高度。

这些方法可以帮助您实现iframe窗口的自适应高度。请注意,当使用跨域通信(postMessage)时,确保在通信过程中进行安全性检查以防止恶意代码的注入。


0