操作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
跨域和非跨域都能让iframe自适应高度还有另外一个款插件可以实现iframeResizer.min.js,不兼容IE8,兼容IE9以上
https://github.com/davidjbradshaw/iframe-resizer
下载包以及测试包:iframeResizer
2、非跨域情况下:
在非跨域情况可以简单的通过DOM来获取内容,可以参考:《iframe获取父、子窗口的方法》