iframe 跨域高度自适应

这个iframe的问题,在工作中简直就是突然的一到坎,打的戳不及防。通常很久遇到一次,每次遇到就忘记了上一次是如何解决的,emmmm…今天本仙女去总结一下。

在实际应用中,很多时候通iframe引入页面,如果同域情况,可以使用以下代码。
script:
window.function(){
var ifm= document.getElementById(“iframepage”);
var subWeb = document.frames ? document.frames[“iframepage”].document:ifm.contentDocument;
if(ifm != null && subWeb != null){
ifm.height = subWeb.body.scrollHeight;
}
}
body:
<iframe src=“iframe.html” id=“iframepage” name=“iframepage” width=“100%”>

但是引进来的页面,往往是跨域的,上述代码就会报错,因为跨域的安全性问题。
所以,我们就要找个“中介”来帮助我们。

比如在域A中有一个页面a.html,我们要引入域C中的页面c.html,这样我们可以在域A中再建立一个“中介”页面b.html,作为c.html的子页面,然后获取一些相关信息,最后通过b.html来实现设置a.html中iframe高度的效果,因为b和a是在同域下的,所以不存在安全障碍。
c.html中的代码如下:(不知道为啥标签一写就出不来代码,请手动补全标签哦)

<iframe id=“b_id” width=“100%” src=“http://域A/b.html” style=“display:none”>
<script type=“text/javascript”>
var c_height=Math.max(document.body.scrollHeight,document.body.clientHeight);
var b_iframe = document.getElementById(“b_id”);
b_iframe.src = b_frame.src+"#"+b_height;

通过url,为"中介"页面b.html传递了c.html的高度信息,这个高度就是a.html中iframe的自适应高度。

b.html中的代码如下:
JavaScript:
//得到a.html中的a_iframe
var a_iframe=parent.parent.document.getElementById(“a_iframe”);
var hash_url = window.location.hash;
//得到传递过来的height属性
var hash_height = hash_url.split("#")[1]+“px”;
//调整a_iframe的height,达到自适应
a_iframe.height = hash_height;

这样就可以实现跨域iframe高度自适应效果了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值