随身笔记
随身笔记

iframe自适应高度

操作iframe要分两种情况:

1、在跨域情况下:

仅仅是父页面想要传值给子页面,参考:《iframe跨域、同域

如果在跨域中用iframe获取src中的页面的高度用普通的方法是无法获取都的,必须要有权限修改src中跨域的页面,和同时设置本地页面才行。如:

本地:
<iframe scrolling="no" src="https://www.baidu.com/1.html"></iframe>  //跨域访问https://www.baidu.com/1.html

<script src="jquery.min.js"></script>
<script src="set-iframe-height-parent-min.js" async></script>

<script>
if (window.console && typeof console.log === 'function') {
   $(window)
    .on('setIframeHeight:shrinked', function (e, data) {
       console.log('iframe shrinked', data);
    })
    .on('setIframeHeight:enlarged', function (e, data) {
       console.log('iframe enlarged', data);
    });
}
</script>
---------------------------------------------------------
远程:www.baidu.com下的页面1.html
//页面底部加
<script src="jquery.min.js"></script>
<script src="set-iframe-height-child-min.js" async></script>

部署以上环境好后,浏览本地页面就会发现iframe的高度会根据www.baidu.com下的页面1.html的html高度的变化而设置。这样就实现了跨域自适应高度效果,经过测试此方法仅兼容IE9。

https://github.com/FaiblUG/setIframeHeight

setIframeHeight-master

 

跨域和非跨域都能让iframe自适应高度还有另外一个款插件可以实现iframeResizer.min.js,不兼容IE8,兼容IE9以上

https://github.com/davidjbradshaw/iframe-resizer

下载包以及测试包:iframeResizer

 

 

 

2、非跨域情况下:

在非跨域情况可以简单的通过DOM来获取内容,可以参考:《iframe获取父、子窗口的方法

随身笔记

iframe自适应高度
操作iframe要分两种情况: 1、在跨域情况下: 仅仅是父页面想要传值给子页面,参考:《iframe跨域、同域》 如果在跨域中用iframe获取src中的页面的高度用普通的方法是无法获取都的,…
扫描二维码继续阅读
2016-06-01