2013-03-19 210 views
4

我使用此代碼自動調整我的iframe http://sonspring.com/journal/jquery-iframe-sizing的大小。工作得很好,但昨天當我使用搜索引擎作爲iframe時出現了一個問題,因爲結果需要0.5秒到1秒才能顯示,自動調整大小無法正確確定窗口的大小,所以我認爲我需要延遲0.5秒的腳本。我怎樣才能做到這一點 ?iframe延遲調整大小

這是iframe.js

$(document).ready(function() 
{ 
    // Set specific variable to represent all iframe tags. 
    var iFrames = document.getElementsByTagName('iframe'); 

    // Resize heights. 
    function iResize() 
    { 
     // Iterate through all iframes in the page. 
     for (var i = 0, j = iFrames.length; i < j; i++) 
     { 
      // Set inline style to equal the body height of the iframed content. 
      iFrames[i].style.height = iFrames [i].contentWindow.document.body.offsetHeight + 'px'; 
     } 
    } 

    // Check if browser is Safari or Opera. 
    if ($.browser.safari || $.browser.opera) 
    { 
     // Start timer when loaded. 
     $('iframe').load(function() 
      { 
       setTimeout(iResize, 0); 
      } 
     ); 

     // Safari and Opera need a kick-start. 
     for (var i = 0, j = iFrames.length; i < j; i++) 
     { 
      var iSource = iFrames[i].src; 
      iFrames[i].src = ''; 
      iFrames[i].src = iSource; 
     } 
    } 
    else 
    { 
     // For other good browsers. 
     $('iframe').load(function() 
      { 
       // Set inline style to equal the body height of the iframed content. 
       this.style.height = this.contentWindow.document.body.offsetHeight + 'px'; 
      } 
     ); 
    } 
} 
); 
+1

哪部分要延遲?你當前的'setTimeout'傳遞0作爲參數。不會傳遞大於500的數字嗎? – 2013-03-19 07:35:19

+0

我需要延遲所有瀏覽器。我不知道你想要推遲「哪一部分」的意思。我需要延遲調整iframe的大小,因爲搜索結果較慢。我應該用500替換0這裏setTimeout(iResize,0); ? – Blazer 2013-03-19 07:40:02

回答

0

很難確切回答沒有看到您的HTML代碼。您可以調整setTimout(iResize, 500);,這將在0.5秒後檢查。

或者,這是我調整單個iframe時使用的。

它將繼續每隔50ms檢查一次,看看body元素是否已經加載。

function resizeIframe(iframe){ 
    var doc = iframe.contentDocument || iframe.contentWindow.document; 
    if(doc.body){ 
     iframe.height =0; 
     iframe.height = doc.body.scrollHeight + 30; 
    } 
    else{ 
     if(delay)clearTimeout(delay) 
      delay = setTimeout(function(){resize(iframe)},50); 
    } 
}; 

var delay, iframe = document.getElementById('iFrame'); 


resizeIframe(iframe); 
+0

我將其移除我的腳本,並嘗試使用您的此iframe