我改变了别人的榜样,认为它更紧凑。当一个DOM对象包含一个js对象的引用(例如,一个事件处理程序),和JS对象持有该DOM对象,循环引用,所以在IE内存泄漏点击运行代码,打开任务管理器看内存在IE8和变化。FF测试,差距就不多说了。

运行代码
复制代码代码如下所示:


内存泄漏

体{
填料:10px;
}





var;
var = 0;
setInterval(){()函数(
Q.push(完工时间());
如果(q.length > = 10){
var = q.shift();
如果({){
s.parentnode.removechild(S);
}
}
氮+;
},10);

函数完成时间(){
var = document.createelement(跨越);
document.body.appendchild(S);
var t = document.createtextnode(*+ N +*);
s.appendchild(T);
s.onclick =功能(e){
风格。背景颜色=红色;
警报(N);
};
返回的;
};



那么IE下面做什么呢

当节点被删除,手动破环的参考和改变setInterval点下面的代码:
复制代码代码如下所示:
setInterval(){()函数(
Q.push(完工时间());
如果(q.length > = 10){
var = q.shift();
如果({){
s.onclick = null; / /这里的关键。
s.parentnode.removechild(S);
}
}
氮+;
},10);