博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iframe动态创建及释放内存
阅读量:6950 次
发布时间:2019-06-27

本文共 1393 字,大约阅读时间需要 4 分钟。

近期參与一个项目的开发,因为项目是基于浏览器的胖client(RIA)应用程序,页面中大量调用iframe。后期測试发现浏览器内存一直居高不下,并且打开iframe页面越多内存占用越大。在IE系列浏览器中尤其明显。全部打开的iframe页面即使关闭了。内存使用也没有明显的下降。IE浏览器在内存占用达到400M左右就变得非常卡。分析发现是iframe没有释放造成的,于是对全部已关闭的iframe所占用的内存进行释放,尽管不能全然释放。可是iframe内存占用量不会一直增长,整个应用内存使用量控制在150M左右。

/** * 动态创建iframe * @param dom 创建iframe的容器,即在dom中创建iframe。dom能够是div、span或者其它标签。 * @param src iframe中打开的网页路径 * @param onload iframe载入完后触发该事件。能够为空 * @return 返回创建的iframe对象*/function createIframe(dom, src, onload){	//在document中创建iframe	var iframe = document.createElement("iframe");		//设置iframe的样式	iframe.style.width = '100%';	iframe.style.height = '100%';	iframe.style.margin = '0';	iframe.style.padding = '0';	iframe.style.overflow = 'hidden';	iframe.style.border = 'none';		//绑定iframe的onload事件	if(onload && Object.prototype.toString.call(onload) === '[object Function]'){		if(iframe.attachEvent){			iframe.attachEvent('onload', onload);		}else if(iframe.addEventListener){			iframe.addEventListener('load', onload);		}else{			iframe.onload = onload;		}	}		iframe.src = src;	//把iframe载入到dom以下	dom.appendChild(iframe);	return iframe;}/** * 销毁iframe,释放iframe所占用的内存。

* @param iframe 须要销毁的iframe对象 */ function destroyIframe(iframe){ //把iframe指向空白页面,这样能够释放大部分内存。 iframe.src = 'about:blank'; try{ iframe.contentWindow.document.write(''); iframe.contentWindow.document.clear(); }catch(e){} //把iframe从页面移除 iframe.parentNode.removeChild(iframe); }

转载地址:http://wtkil.baihongyu.com/

你可能感兴趣的文章
c++ 编译时函数匹配和运行时类型识别
查看>>
Mybatis-generator生成Service和Controller
查看>>
系统架构设计师-软件水平考试(高级)-理论-数据库
查看>>
前端面试经典题目合集(HTML+CSS)一
查看>>
计算最大子段(分治法)
查看>>
Ubuntu安装PyCharm
查看>>
利用python实现词向量训练----
查看>>
eclipse中如何去掉复制代码有行号的数字
查看>>
冒泡排序
查看>>
转:ActiveMQ的作用总结(应用场景及优势)
查看>>
2-范数、1-范数、···
查看>>
12.使用remove()和empty()方法删除元素
查看>>
46.获取浏览器的名称与版本信息
查看>>
大学生个人简历
查看>>
解决VMware联网的问题(3)
查看>>
802.1X技术介绍
查看>>
三层架构之优缺点
查看>>
【LeetCode 100_二叉树_遍历】Same Tree
查看>>
数学论文生成器的论文……被接受了
查看>>
电机随笔
查看>>