2014-08-28 101 views
0

我有一個需要rezise它的高度在每次加載時的iframe,我想這樣的例子很多,但他們都在IE和Chrome,但在Firefox中沒有工作的罰款,直到我試圖這樣一個它適用於所有的東西的iframe屬性的onload多次調用

function autoResize() { 
      var subscriptionFrame = jQuery("#frame_name_here"); 
      var innerDoc = (subscriptionFrame.get(0).contentDocument) ? subscriptionFrame 
        .get(0).contentDocument 
        : subscriptionFrame.get(0).contentWindow.document; 
      if (innerDoc.body.scrollHeight == 0) 
       innerDoc.location.reload(true); 
      subscriptionFrame.height(innerDoc.body.scrollHeight + 10); 
     } 

<iframe src="uploadFile.xhtml" class="upload-iframe" 
      id="frame_name_here" onload="autoResize();"></iframe> 

但是有一個問題,這個腳本多次調用onload(遞歸),任何想法爲什麼?

+0

由於改變高度觸發負載 – Jacob 2014-08-28 09:30:44

+0

是它因爲這樣:'innerDoc.location.reload(真);'? – Pete 2014-08-28 09:31:14

+0

我想我找到了問題'如果(innerDoc.body.scrollHeight == 0) innerDoc.location.reload(真);'這部分使得它重新加載,但iframe的高度爲0,直到一定的作用,但這個遞歸電話打電話給服務器任何想法如何阻止此? – 2014-08-28 09:38:25

回答

0

我找到了答案,iframe部分顯示爲none,並不意味着它不在Dom樹中,這就是遞歸部分發生的原因,因爲iframe在這種情況下沒有得到任何高度,直到iframe被顯示,並且高度的內容被resize函數讀取。所以爲了解決這個問題,而不是display:none,我做了iframe部分在dom樹中不呈現,直到某些動作,所以通過這個動作resize方法只會讀取一次內容。