2014-03-06 49 views
0

我想要計算iframe需要完全顯示的最小高度。獲取僅包含呈現元素的iframe的高度

爲了實現這一點,我嘗試以下方法:

var neededSize = $(window.document).height(); 

    // Get the jquery of the parent in order to resize the frame 
    var par = window.parent; 

    if(par != null) { 
     var jq = par.jQuery; 

     var frameParent = jq('#' + window.frameElement.id); 
     frameParent.height(neededSize); 
    } 

這種方法的問題是,在iframe包含一些隱藏要素(顯示:無;)。當我使用jQuery.height()時,它返回所需的最小高度,包括隱藏的元素。

有誰知道通過jQuery的或標準的JavaScript來獲得不包括高度隱藏的div採取或最小高度的方法,我應該算這個自己? (讓所有的隱藏字段和每個。減去高度?)

+0

帶'display:none'的元素不佔用文檔中的任何空間 – matewka

+0

仍然jQuery('selector')。height()似乎包括他們.. –

+0

你可以證明它以某種方式在jsfiddle?即使快速查看標記也可以幫助解決問題。 –

回答

0

嘗試在文檔準備好處理程序速記它包裝:

$(function(){ 
    //your code here 
}); 

文檔:

傳遞。就緒處理程序()是保證在DOM準備好後執行,所以這通常是附加所有其他事件處理程序並運行其他jQuery代碼的最佳位置。在使用依賴CSS樣式屬性值的腳本時,在引用腳本之前引用外部樣式表或嵌入樣式元素很重要。

因此,所有的DOM元素呈現後的代碼會被執行。可能高度與隱藏的元素一致。 (因爲.css仍在加載,所以它們可能在瞬間顯示)

+0

我不需要調整文檔的大小,但是當事件被觸發時。文檔準備就緒後觸發此事件。 –

+0

你試過了嗎? –