2012-02-06 164 views
2

我有一個iframe,它包含一些帶有一些jQuery驗證的表單,如果出現錯誤,會導致內容高度增加。動態調整動態更改內容高度的iFrame高度(解釋裏面)

下面你可以找到我用來動態地改變我的iFrame的高度插件:

function doIframe(){ 
o = document.getElementsByTagName('iframe'); 
for(i=0;i<o.length;i++){ 
    if (/\bautoHeight\b/.test(o[i].className)){ 
     setHeight(o[i]); 
     addEvent(o[i],'load', doIframe); 
    } 
    } 
} 

function setHeight(e){ 
if(e.contentDocument){ 
    e.height = e.contentDocument.body.offsetHeight + 35; 
    } else { 
    e.height = e.contentWindow.document.body.scrollHeight; 
    } 
} 

function addEvent(obj, evType, fn){ 
    if(obj.addEventListener) 
    { 
    obj.addEventListener(evType, fn,false); 
    return true; 
    } else if (obj.attachEvent){ 
    var r = obj.attachEvent("on"+evType, fn); 
    return r; 
    } else { 
     return false; 
    } 
} 

if (document.getElementById && document.createTextNode){ 
    addEvent(window,'load', doIframe);  
} 

,並設置高度我$("#booking_iframe").iframeAutoHeight({minHeight: 840});


如何修改代碼(或者使用其他代碼)來動態改變我的iFrame如果iframe的內容的高度,因爲jQuery驗證的改變高度?

你可以通過去here並在邊欄中填寫表單來看到這一點。

回答

2

如果你定義了一個名爲像resizeCallBackFunction()函數,調整大小的頂層文檔中的IFRAME(包含iframe中的一個),然後從文件中的iframe中,你可以調用它(並傳遞一個參數,像高)這樣的,只要在文檔中的內容在iframe變化:

window.top.window.resizeCallBackFunction(height); 

這在所有瀏覽器(MSIE 6-9,火狐,Chrome,Safari瀏覽器...工作可靠) 。

+0

這是假設,當然,iframe和父容器都有相同的URL,否則你將不得不修改你的服務器設置,以允許這一點。 – 2015-08-24 16:48:32