IE下动态高整IFRAME大小

做法

1,定义一数组。

2,window.onresize时,将操作函数压入数组,并设置setTimeout回调。

3,回调里面判断是否到数组0元素,即并pop到最后一个元素,并判断不等于undefined时则执行函数。否则返回。

另附有一查找函数,用于对iframe指定标签的父元素进行查找,除了将iframe设置高度外,还将父元素的高度一并设置。(此步可选)

PS:

对iframe中的文档检查高度时使用 scrollHeight 属性,且要检查  iframe.contentDocument 和 iframe.contentWindow 哪个存在。contentDocument 应该是对应标准的DOM,contentWindow在旧的IE模式下使用(兼容模式)。

        window.resizeStack = []; 
        function onresizing() {
            window.resizeStack.push(app.doResize);
            setTimeout("checkResizeStack();", 500);
        }
        window.onresize = onresizing;
        var app = { win: window,
            doResize: function() {
                var frm = document.getElementById("launchFrame");
                var frmParent = wrapParent(frm, "table");
                if (frm.contentDocument && frm.contentDocument.body.scrollHeight) {
                    var h = frm.contentDocument.body.scrollHeight;
                    frm.style.pixelHeight = Number(h) + 100;
                    frmParent.style.pixelHeight = Number(h) + 100;
                } else if (frm.contentWindow && frm.contentWindow.document) {
                    var h2 = frm.contentWindow.document.body.scrollHeight;
                    frm.style.pixelHeight = Number(h2) + 100;
                    frmParent.style.pixelHeight = Number(h2) + 100;
                }
            }
        }
        function checkResizeStack() {
            var f = window.resizeStack.pop();
            if (window.resizeStack.length > 0) {
                setTimeout(checkResizeStack, 500);
            } else {
                if (f != undefined) {
                    f();
                }
            }
        }
        function wrapParent(obj, tagName) {
            var p            
            if (obj.parentNode != undefined) {
                p = obj.parentNode;
                while (true) {
                    if (p.tagName != undefined && (p.tagName.toLowerCase() == tagName)) {
                        p = p;
                        break;
                    }
                    if (p.parentNode != undefined) {
                        p = p.parentNode;
                    }
                    else {
                        p = obj;
                        break;
                    }
                }
            }
            return p;
        }


  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值