哔哔one
似乎我没有足够的代表发表评论,所以另一个答案将不得不这样做。当您使用RemoveChild()或通过在父节点上设置innerHTML属性来解除节点链接时,还需要确保没有其他引用它的内容,否则它不会被实际销毁,并会导致内存泄漏。在调用removechild()之前,您可以通过多种方式对节点进行引用,并且必须确保显式删除那些未超出作用域的引用。道格·克罗克福德这里该事件处理程序是IE中循环引用的一个原因,建议在调用removechild()之前显式地删除它们,如下所示function purge(d) {
var a = d.attributes, i, l, n;
if (a) {
for (i = a.length - 1; i >= 0; i -= 1) {
n = a[i].name;
if (typeof d[n] === 'function') {
d[n] = null;
}
}
}
a = d.childNodes;
if (a) {
l = a.length;
for (i = 0; i
purge(d.childNodes[i]);
}
}}即使你采取了很多预防措施,你仍然可以像jens-ingo farley所描述的那样,在IE中发现内存泄漏。这里.最后,不要陷入认为Javascript删除就是答案。这似乎是许多人的建议,但做不到这份工作。这里是对理解的一个很好的参考删除作者:康阿克斯。