动态创建IFRAME加载方法和内存释放

1.document.createElement("IFRAME")后不要设置src属性,应先注册IFRAME的onload事件,然后把IFRAME添加到容器中

2.设置计数器变量,默认值为0,在onload方法中检查计数器是否为0,如果为0则设置src属性(会再次触发IFRAME onload事件),然后计数加1

3.在IFRAME onload事件中判断计数后检查IFRAME src是否为nul,如果是则释放IFRAME

4.在IFRAME onload事件最后正常处理的代码

5.要释放IFRAME时,只要把src设置为null即可自动释放

示例:

var $iframe = $(doc.createElement("IFRAME"));
$iframe.attr("frameborder", 0);
$iframe.attr("scrolling", undefined === scrolling ? "no" : scrolling);
$iframe.css("width", "100%");
$iframe.css("height", "100%"); 

var msie = /msie/.test(navigator.userAgent.toLowerCase());  /*jQuery1.9以上版本检测是否为IE浏览器*/
 var iframeInfo = { $iframe: $iframe, msie: msie, count: 0 };  /*count为计数器,必须使用对象引用再第二次加载时数值才有效*/
                $iframe.on("load", iframeInfo, function (e) {
                    if (0 == e.data.count) {                                        /*检查是否为首次加载*/
                        e.data.$iframe.contents().empty();
                        e.data.$iframe.attr("src", "user.htm");
                        ++e.data.count;
                        return;
                    }               
                    if (null == e.data.$iframe.attr("src")) {               /*检查是否为释放iframe*/
                        e.data.$iframe.contents().empty();
                        e.data.$iframe.removeAttr('src');
                        e.data.$iframe.remove();
                        if (e.data.msie)
                            CollectGarbage();
                        e.data.$popupdlg.wijdialog("close");          ///这一句可选,这里是关闭对话框
                        return;
                    }
                /*IE会执行两次*/
                if (e.data.msie && 1 == e.data.count) {
                    ++e.data.count;
                    return;
                }

			/*最后才是正常处理的代码,根据实际需要编写代码*/
                    var $divContainer = $(e.data.$iframe[0].contentWindow.document.getElementById("divContainer"));
                    $divContainer.show();                
                });



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kmblack1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值