需求: A页面使用iframe标签跨域包含B页面
问题: A/B页面不同域,A页面无法获取并自适应B页面高度
方案: 增加C页面,A/C页面同域,A包含B,B包含C,B通知C高度,C调整A页面iframe高度~
跨域IFRAME自适应高度
A页面:
<iframe id="iframe_a" src="B页面url" width="100%" style="border:0"></iframe>
B页面:
<div style="background:#9AC86C;height:1000px"></div>
<iframe id="iframe_b" src="C页面url" style="display:none"></iframe>
<script>
//获取本页面高度
var height_b = Math.max(document.body.scrollHeight, document.body.clientHeight);
//在src属性中增加高度信息
var iframe_b = document.getElementById('iframe_b');
iframe_b.src = iframe_b.src + '#' + height_b;
</script>
C页面:
<script>
//获取B页面高度
var height_b = window.location.hash.split('#')[1] + 'px';
//获取A页面iframe对象
var iframe_a = parent.parent.document.getElementById('iframe_a');
//调整A页面iframe高度
iframe_a.height = height_b;
</script>