2009-11-19 243 views
2

我正在使用以下腳本自動調整iframe高度。根據內容調整iframe高度

function autoIframe(frameId) { 
    try { 
    frame = document.getElementById(frameId); 
    innerDoc = (frame.contentDocument) ? 
       frame.contentDocument : frame.contentWindow.document; 
    objToResize = (frame.style) ? frame.style : frame; 
    objToResize.height = innerDoc.body.scrollHeight + 10 + 'px'; 
    } 
    catch (err) { 
    window.status = err.message; 
    } 
} 

我在第一次兩個選項卡(myiframe1和myiframe2)

我在不同iframe的onload事件調用上面的代碼要3個jQuery的標籤和iframe中。

<iframe id="myiframe1" width="100%" onload="autoIframe('myiframe1');" 
     scrolling="auto" frameborder="0" src="mypath1"> 
</iframe> 

<iframe id="myiframe2" width="100%" onload="autoIframe('myiframe2');" 
     scrolling="auto" frameborder="0" src="mypath2"> 
</iframe> 

這在谷歌瀏覽器和IE8中正常工作。 但在Firefox中,第一個選項卡(可見選項卡)中的iframe具有每個內容的高度,而第二個選項卡中的iframe沒有設置適當的高度。第二個標籤的高度設置爲10px。

這裏有什麼問題?

回答

1

display:none元素的高度爲0 iirc,但jquery提供了一種「不隱藏但將標籤內容移出屏幕」的方法。

你可以找到文檔/例子在這裏:

jquery ui docs - tabs - faq

+0

優秀。這個提示很有效。 – Prasad 2009-11-19 11:29:16

0

你可以試試這個:

選擇iframe的要調整第一(所以當它成爲可見它得到的高度)選項卡,然後選擇第一個(電流)再次標籤:

$('#tabs').tabs('select', 2); 
// adjust second tab iframe height here 
$('#tabs').tabs('select', 1); 

(可能不可見/未選中標籤內容的高度爲0,因此調整大小將不起作用)。

相關問題