子窗口操作父窗口自适应高度<iframe></iframe>

这不是跨域,且我不喜欢用定时器判断,父窗口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高度
});

–到底这个有什么用呢,尴尬…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值