子窗口操作父窗口自適應高度

這不是跨域,且我不喜歡用定時器判斷,父窗口load事件已適應子窗口高度,但如果後續操作會改變高度將不會適應新高度,且父窗口的click,mouse事件只有邊框能觸發,不用定時器去隨時判斷,那就只有從子窗口着手.

$(function(){
    var parentHeight = 0;//父窗口iframe高度
    var parentFrame = null;//父窗口iframe
    var resizeFrame = function(){};//強迫症初始化,事件方法用於移除事件
    resizeFrame = function(){
        if(window===parent)return $("body").unbind("mousemove",resizeFrame);//如果window對象和parent對象相等說明這不是iframe
        if(parentHeight==0){//如果高度沒有被設置過
            for (var i = 0; i < $(parent.document).find("iframe").length; i++) {//遍歷父窗口iframe
                if($(parent.document).find("iframe")[i].contentWindow===window){//查找當前iframe
                    parentFrame = $(parent.document).find("iframe").eq(i);//保存<iframe>
                    parentHeight = parentFrame.height();//保存<iframe>高度
                }
            }
        }
        if(parentHeight!=$(this).height()){//如果父容器<iframe>高度不和子窗口body高度一致,則修改
            parentHeight = $(this).height();
            parentFrame.height(parentHeight);
        }
    };
    $("body").bind("mousemove",resizeFrame);//在子窗口可見界面添加鼠標監聽,也可以在 父窗口parent.document.body添加
});

附上初始化高度:

$('<iframe name="window_body_iframe" class="window-body-iframe" src="url" scrolling="no" frameborder="0" style="display:none;"></iframe>').on("load",function(){
    var _this = $(this);
    _this.show();//本來是隱藏了爲的是直接顯示改變高度後的窗體
    var height = $(window.frames["window_body_iframe"].document).height(); _this.height(height);//設定子窗口body高度
});

–到底這個有什麼用呢,尷尬…

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章