根據內容調整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>
發佈了15 篇原創文章 · 獲贊 1 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章