2013-01-06 41 views
2

我正在尋找一種方法使jQuery UI對話框高度根據內容動態變化。jQuery對話動態高度

這裏是我的代碼:

$("#dialog-modal_"+productID).html("<iframe src='index.php?act=showProduct&amp;id="+productID+"' width='100%' height='100%' frameborder='0' scrolling='no'></iframe>"); 

$("#dialog-modal_"+productID).dialog(
{ 
    width: 810, 
    height: 590, 
    resizable: false, 
    modal: true, 
    open: function(event, ui) 
    { 
    } 
}); 


反正有沒有這樣做呢?

回答

1

因爲你給的例子來自相對路徑。您應該能夠獲取iframe的文檔.height()

但是,您需要做一些CSS技巧來首先呈現iframe並獲取其inbrowser文檔高度,然後將該值應用於您的容器,然後將容器一旦新的高度被設定。

像...

從這裏取:

var doc=document.getElementById("frame").contentDocument; 

// Earlier versions of IE or IE8+ where !DOCTYPE is not specified 
var doc=document.getElementById("frame").contentWindow.document; 

那麼你會

var iframeDocHeight = $(doc).height(); // assuming it is displayed 
$("#dialog-modal_"+productID).css("height", iframeDocHeight); 

當然,這依賴於你已經得到的基礎上的方式(給定其餘的頁面框架)允許iframe渲染而不立即顯示它。

我會建議position:absolutevisibility:hidden的組合,然後一些js巫師來完成這一點。如果沒有一個完整的HTML文檔,建議一個超出我已經發布的絕對路徑是沒有用的。

本質封裝的iframe中的元素與overflow:hidden;display:block;height0px;,而是讓iframe中呈現完全(它會被隱藏),然後對其進行檢查並進行測量必要

祝你好運!

+0

嘿:首先謝謝你!其次:它很難做到你所說的。也許你可以幫我找到另一種進入$(「#dialog-modal _」+ productID).html iframe的內容的方法嗎? – user1936192

+0

我不確定你在問什麼 - 你想要的高度或iframe的內容?如果以前,我的原始答案是你應該採取的方法。如果以後,那麼是什麼阻止你使用'var iframeHTML = $(「yourIFrameObj」)。html()'? –