设置 iframe 的 src 为 'about:blank' 之后,不置为“about:blank”,内存不会释放掉。还必须用 iframe.document.write('');
这样才能将内容清空,但是这样处理之后任然会有500-1000K左右的内存残留,这就是ie6的iframe bug,动态创建的iframe总会耗费掉一些内存。
1、资源回收
function
clearIframe(id){
var el = document.getElementById(id),
iframe = el.contentWindow;
if (el){
el.src = ' about:blank ' ;
try {
iframe.document.write( '' );
iframe.document.clear();
} catch (e){};
// 以上可以清除大部分的内存和文档节点记录数了
// 最后删除掉这个 iframe 就哦咧。
document.body.removeChild(el);
}
}
var el = document.getElementById(id),
iframe = el.contentWindow;
if (el){
el.src = ' about:blank ' ;
try {
iframe.document.write( '' );
iframe.document.clear();
} catch (e){};
// 以上可以清除大部分的内存和文档节点记录数了
// 最后删除掉这个 iframe 就哦咧。
document.body.removeChild(el);
}
}
2、触发事件
clearIframe(
'
iframe_id
'
);
可以在页面卸载前,移除 iframe 前触发。
文中没有提到 “CollectGarbage();” 这个方法因为不兼容其他浏览器,有时还不能释放,而且不建议做频繁释放操作,所以有些内存还是交给浏览器处理吧。
如果还有什么好的方法,欢迎提出。