进一步说明IE7内存泄漏

时间:2012-02-08 03:23:26

标签: javascript javascript-events

所以我相信我在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变量之间循环的情况,对吗?我还在努力解决这个概念。

2 个答案:

答案 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进行测试