Skip to content

解决IE 下使用iframe 内存泄露问题

项目中常用到的就是iframe,主要因为是内部管理系统.

但是在IE下部分功能就显得特别慢.主要原因是因为每次通过IFRAME并关闭页面后,IE的内存会增加3M左右,但是IFRAME没有释放掉.

找到这个原因.其实已经发现几年了.以为微软会修复此问题.但是好像我想多了.

网上也有网友给出了相关的资料

IE在iframe元素的回收方面存在着bug,在通常情况下应该将该元素的src属性值修改为”abort:blank”,并手工将其从DOM树上移除,然后把脚本中引用它的变量置空并调用CollectGarbage()就可以避免iframe不能正常回收所造成的内存泄露。

按照上述方法,在tab的close事件中添加了iframe的销毁代码,IE的内存泄露问题得以解决。

示例如下:

<body style=”margin-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;” onunload=”winClose()”>
<iframe id=”frame1″ width=”100%” height=”100%” frameborder=no marginwidth=0 marginheight=0 scrolling=auto allowtransparency=true></iframe>
<script type=”text/javascript”>
document.getElementsByTagName(“iframe”)[0].src = window.dialogArguments[“url_iframe”];
document.title = window.dialogArguments[“ModelDialogTitle”]!=null?window.dialogArguments[“ModelDialogTitle”]:””;

function winClose()
{
obj=document.getElementById(“frame1″);
obj.src=”javascript:false”;
obj.removeNode(true);
obj=null
CollectGarbage();
}
</script>

 

参考网址:http://my.oschina.net/jsan/blog/11169

发表评论

电子邮件地址不会被公开。 必填项已用*标注