React 使用postMessage获取iframe内容高度完成自适应(不设置高度)

本文介绍了React中如何使用postMessage通信来获取iframe内容的高度,从而实现iframe的自适应布局。详细讨论了三种方法,包括自行计算高度、使用iframe-resizer库以及postMessage通信。特别指出,虽然postMessage方法兼容性好,但在iOS移动端,无论同源或跨域,iframe内容会以新窗口打开,遮挡顶部内容,这是一个目前无法解决的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一种方式 自己计算 不支持跨域的url
      <iframe id='iframe' width='100%' onLoad={resizeHeight} src="http://127.0.0.1:8000/testPage" frameBorder='0'></iframe>

使用Iframe标签 onload方法 通过动态计算获取iframe内容高度的函数,此方法兼容性比较好,但仅仅是同源,即url协议、域名、端口号必须和父页面保持一致,所以把它给毙了

 const resizeHeight=()=>{
   
   
 let iframe = document.querySelector('#iframe');
   let contentHeight = Math.max(
      document.body.scrollHeight,
      document.documentElement.scrollHeight,
      document.body.offsetHeight,
      document.documentElement.offsetHeight,
      document.body.clientHeight,
      document.documentElement.clientHeight
    )
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

烈焰晴天

你的鼓励就是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值