根据内容调整iframe的高度

        因为要做一个通过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 >
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值