2013-08-28 31 views
0

我正在解決這裏的一個謎團。我有下面的代碼,當一個內容被加載到一個jQuery對話框中的iframe中時被調用。我想根據內容適當地設置對話框大小。用於設置對話框寬度和高度的前兩行(註釋)工作,但後面兩行(未註釋)行不起作用(顯示的高度略小於應該的值,內容垂直溢出,寬度可以)。即使兩個斷言都通過了,這也是正確的,這意味着無論我使用oO兩個版本中的哪個版本,第三個參數都應該具有相同的值。任何建議如何可能甚至可能?jQuery對話框:將內容加載到其iframe後設置大小

frameElem.load(function() { 
    frameDoc = frameElem.contents(); 
    var boxWidth = Math.min($(window).width(), frameDoc.width()); 
    var boxHeight = Math.min($(window).height(), frameDoc.height()); 
    console.assert(boxWidth == frameDoc.width()); 
    console.assert(boxHeight == frameDoc.height()); 

    //works correctly: 
    //$(boxElem).dialog('option', 'width', frameDoc.width()); 
    //$(boxElem).dialog('option', 'height', frameDoc.height()); 

    //does not work 
    $(boxElem).dialog('option', 'width', boxWidth); 
    $(boxElem).dialog('option', 'height', boxHeight); 

    $(boxElem).dialog('option', 'position', 'center'); 
    $(boxElem).dialog('open'); 
}); 

我試圖提供的jsfiddle但不能做的iframe部分:(

編輯:奇怪的是,如果我看的對話框元素,它已得到高度:自動;和寬度: 677px在這兩個版本的風格,所以有什麼問題的高度設置。

回答

0

所以事情是,這個打印兩種不同的高度。首先543,然後586

console.log(frameDoc.height()); 
    $(boxElem).dialog('option', 'width', frameDoc.width()); 
    console.log(frameDoc.height()); 

不確定爲什麼,但至少現在的行爲是有道理的。

相關問題