现在的位置: 首页 > 综合 > 正文

根据内容调整iframe的高度

2013年10月09日 ⁄ 综合 ⁄ 共 2776字 ⁄ 字号 评论关闭

        因为要做一个通过word文件上传,另存为html文件,再进行发布的模块。由word另存的html文件是没有宽度的。为了更好的控制它的显示,因此采用iframe标记把它加入到主体框架HTML文件中。

        从网上搜集到一些关于根据iframe标记的内容来动态调整其高度的JS代码,现贴于此方便使用。

转自www.zeali.net/entry/81的JS:

放到HEAD区域:

<script language="Javascript">
var getFFVersion=navigator.userAgent.substring(navigator.userAgent.indexOf("Firefox")).split("/")[1]
//extra height in px to add to iframe in FireFox 1.0+ browsers
var FFextraHeight=getFFVersion>=0.1? 16 : 0 
function dyniframesize(iframename) {
  
var pTar = null;
  
if (document.getElementById){
    pTar 
= document.getElementById(iframename);
  }

  
else{
    eval(
'pTar = ' + iframename + ';');
  }

  
if (pTar && !window.opera){
    
//begin resizing iframe
    pTar.style.display="block"
    
    
if (pTar.contentDocument && pTar.contentDocument.body.offsetHeight){
      
//ns6 syntax
      pTar.height = pTar.contentDocument.body.offsetHeight+FFextraHeight; 
    }

    
else if (pTar.Document && pTar.Document.body.scrollHeight){
      
//ie5+ syntax
      pTar.height = pTar.Document.body.scrollHeight;
    }

  }

}

</script>

在iframe标记里调用js函数:

<iframe id="doc" onload="javascript:{dyniframesize('doc');}" marginwidth=0 marginheight=0 frameborder=0 scrolling=no src="test.htm" width="100%"></iframe>

此脚本主要是在iframe标记里通过调用JS函数来动态调整。另一JS代码其实质与上述代码类似,但工作方式稍有不同。有了更多的根据不是浏览器的设置,使用的时候需要把所有的iframe标记的ID添加到iframeids变量里来。支持多iframe标记的同时设置。代码如下(http://www.knowsky.com/4928.html),放到head区域即可。

<script type="text/javascript">
 
//** iframe自动适应页面 **//
 //输入你希望根据页面高度自动调整高度的iframe的名称的列表
 //用逗号把每个iframe的ID分隔. 例如: ["myframe1", "myframe2"],可以只有一个窗体,则不用逗号。
 //定义iframe的ID
 var iframeids=["doc"]
 
//如果用户的浏览器不支持iframe是否将iframe隐藏 yes 表示隐藏,no表示不隐藏
 var iframehide="yes"
 
function dyniframesize() 
 
{
  
var dyniframe=new Array()
  
for (i=0; i<iframeids.length; i++)
  
{
   
if (document.getElementById)
   
{
    
//自动调整iframe高度
    dyniframe[dyniframe.length] = document.getElementById(iframeids[i]);
    
if (dyniframe[i] && !window.opera)
    
{
     dyniframe[i].style.display
="block"
     
if (dyniframe[i].contentDocument && dyniframe[i].contentDocument.body.offsetHeight) //如果用户的浏览器是NetScape
      dyniframe[i].height = dyniframe[i].contentDocument.body.offsetHeight; 
     
else if (dyniframe[i].Document && dyniframe[i].Document.body.scrollHeight) //如果用户的浏览器是IE
      dyniframe[i].height = dyniframe[i].Document.body.scrollHeight;
    }

   }

   
//根据设定的参数来处理不支持iframe的浏览器的显示问题
   if ((document.all || document.getElementById) && iframehide=="no")
   
{
    
var tempobj=document.all? document.all[iframeids[i]] : document.getElementById(iframeids[i])
    tempobj.style.display
="block"
   }

  }

 }

 
if (window.addEventListener)
     window.addEventListener(
"load", dyniframesize, false)
 
else if (window.attachEvent)
     window.attachEvent(
"onload", dyniframesize)
 
else
     window.onload
=dyniframesize
</script>

抱歉!评论已关闭.