所以我相信我在IE7中遇到了内存泄漏。当用户离开它时,我们的一个页面崩溃了。从进行一些调试开始,我发现下面这段代码似乎是罪魁祸首,考虑到我在评论时页面工作正常。
$$('.someClass').each(function(item, index) {
$(item).addEvent('click', function(e) {
if (e) e.preventDefault();
// ...
// MEMORY LEAK??
var userId = $(item).getElement('a').id.substr(10);
// ...
});
});
这是一个需要打破DOM元素和userId变量之间循环的情况,对吗?我还在努力解决这个概念。
答案 0 :(得分:0)
那里没有内存泄漏。 userId
只是一个与任何东西都没有连接的字符串变量。一旦超出范围,浏览器就会垃圾收集它。
答案 1 :(得分:0)
我正在尝试(我可以假设它是mootools吗?),并且可以确认泄漏。
你在each()中做什么并不重要,each()会创建泄漏。在每次页面加载时,我得到2个泄漏,1个用于HTML元素,1个用于DIV元素。
DIV不是DOM的一部分(在文档中没有DIV的情况下测试它),它是由mootools创建的,用于测试目的。当我只使用它时,也会发生泄漏:
$$('.someClass').each(function(){});
所以我建议:不要使用mootools ^^
P.S:使用mootools-core-1.4.4-full-compat.js,IE6和sIEve进行测试