A-A+
iframe框架自适应高度多种方法介绍
iframe框架自适应高度这个问题有很多朋友写了非常不错的一些解决办法,下面我一些不错的iframe框架自适应高度的代码收藏起来给大家参考。
HTML代码如下:
- <iframe src="http://www.fufuok.com/" id="iframepage" name="iframepage" frameBorder=0 scrolling=no width="100%" onLoad="iFrameHeight()" ></iframe>
Javascript代码如下:
- <script type="text/javascript" language="javascript">
- function iFrameHeight() {
- 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;
- } //xiariboke.net
- }
- </script>
代码二,在包含Iframe的页面:
- <iframe src="main.asp" width="557px" height="100%" name="Mainv" id="Mainv" scrolling="no" marginheight="0" marginwidth="0" frameborder="0" style="border:#FFFFFF"></iframe>
然后在每个要在Iframe中显示的页面上,代码如下:
- <body onload="parent.document.all.Mainv.height=getTotalHeight();">
然后在页面底部加入如下代码:
- <div id="theEnd" style="position:relative"></div>
- <script language="JavaScript">
- function getTotalHeight(){
- return document.getElementById("theEnd").offsetTop+10;
- }//xiariboke.net
- </script>
同域下的iframe自适应高度,同域下父页面内的js能获取到iframe页面的高度,所以在iframe加载完后获取下高度就行了,代码如下:
- <iframe src="./ue.html" id="Iframe" frameborder="0" scrolling="no" style="border:0px;width:1000px;" onload="autoHeight();"></iframe>
- <script type="text/javascript">
- function autoHeight(){
- var iframe = document.getElementById("Iframe");
- if(iframe.Document){//ie自有属性
- iframeiframe.style.height = iframe.Document.documentElement.scrollHeight;
- }else if(iframe.contentDocument){//ie,firefox,chrome,opera,safari
- iframeiframe.height = iframe.contentDocument.body.offsetHeight ;
- }
- }
- </script>
如果是同一个域名下的不同子域,设置下document.domain就行了,IE6和IE7中的iframe没有contentDocument属性,而且如果iframe里的页面在同域下的不同子域,通过iframe.Document.documentElement.scrollHeight获取到的高度是错误的,所以还是建议用 iframe.contentwindow.document来获取高度.
2.跨域下的iframe自适应高度
跨域的时候,由于js的同源策略,父页面内的js不能获取到iframe页面的高度。需要一个页面来做代理。
方法如下:假设www.a.com下的一个页面a.html要包含www.b.com下的一个页面c.html。
我们使用www.a.com下的另一个页面agent.html来做代理,通过它获取iframe页面的高度,并设定iframe元素的高度。
a.html中包含iframe,代码如下:
- <iframe src="http://www.b.com/c.html" id="Iframe" frameborder="0" scrolling="no" style="border:0px;"></iframe>
在c.html中加入如下代码:
- <iframe id="c_iframe" height="0" width="0" src="https://www.xiariboke.net/agent.html" style="display:none" ></iframe>
- <script type="text/javascript">
- (function autoHeight(){
- var b_width = Math.max(document.body.scrollWidth,document.body.clientWidth);
- var b_height = Math.max(document.body.scrollHeight,document.body.clientHeight);
- var c_iframe = document.getElementById("c_iframe");
- c_iframe.src='#'"
- })();
- </script>