操作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获取父、子窗口的方法》