首頁 >web前端 >js教程 >jquery ajax應用程式中iframe自適應高度問題解決方法_javascript技巧

jquery ajax應用程式中iframe自適應高度問題解決方法_javascript技巧

WBOY
WBOY原創
2016-05-16 16:52:35969瀏覽

iframe自適應高度本身是很簡單的方法,就是在頁面載入完成後,重新計算一下高度即可。

程式碼如下:

複製程式碼 程式碼如下:

//公用方法:設定iframe的高度以確保全部顯示資料
//function SetPageHeight() {
//    var iframe = getUrlParam('ifname');
//  docif var myiframo = window );
//     iframeLoaded(myiframe);
//}
var iframeLoaded = function (iframe) {
    if (iframe.src.length > 0) {
        if (!iframe .readyState || iframe.readyState == "complete") {
            var bHeight =
            var dHeight =
            iframe.contentWindow.document.documentElement. scrollHeight;
            var height = Math.max(bHeight, dHeight);
           }
}
//分頁時重新設定iframe 高度;修改後:iframe.name = iframe.id
var reSetIframeHeight = function()
{
    try {
       oIframe. height = 100;
        iframeLoaded(oIframe);
    }
    catch (     parent.document.getElementById(window.name).height = 1000;
          } catch (err2) { }
    }
}

呼叫reSetIframeHeight();方法即可。

但還有一種情況就是使用jquery ajax請求數據,數據都是在body load完成後,還在進行http請求,這時候沒有數據佔據窗口高度,reSetIframeHeight方法無法計算出來高度。

這時候,我們想到一個方法:ajax什麼時候能夠執行完成,當然是Complete事件是執行完成。
但是我們也無法在每個頁面的ajax Complete事件中加入處理。這裡就用到了jquery ajax的全域變數。
處理ajax和iframe自適應的程式碼:

複製程式碼


程式碼如下:

程式碼如下:varsendcount = 0;var completecount = 0;
// 新增ajax全域事件處理。
reSetIframeHeight();
$(document).ajaxStart(function (a, b, c) {
}).ajaxSend(function (e, xhr, opts) {
    >}).ajaxError(function (e, xhr, opts) {
}).ajaxSuccess(function (e, xhr, opts) {
}).ajaxComplete(function (e, xhr, opts) {
    completecount ;
        reSetIframeHeight();

}).ajaxStop(function () {
});
}).ajaxStop(function () {
});
}).ajaxStop(function () {
});
測試有效。
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn