Javascript 进一步澄清IE7内存泄漏

Javascript 进一步澄清IE7内存泄漏,javascript,javascript-events,Javascript,Javascript Events,所以我相信我在IE7中遇到了内存泄漏。当用户离开时,我们的一个页面正在崩溃。在进行一些调试时,我发现下面的代码似乎是罪魁祸首,考虑到在我对页面进行注释时页面工作良好 $$('.someClass').each(function(item, index) { $(item).addEvent('click', function(e) { if (e) e.preventDefault(); // ... // MEMORY LEAK??

所以我相信我在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变量之间的循环,对吗?我还在为这个概念挣扎。

那里没有内存泄漏
userId
只是一个与任何内容都没有连接的字符串变量。一旦它超出范围,浏览器将对其进行垃圾收集。

我正在尝试(我可以假设它是mootools吗?),并且可以确认泄漏

无论您在each()中执行什么操作,each()都会造成泄漏。在每次加载页面时,我都会发现两个漏洞,一个是HTML元素,一个是DIV元素

DIV不是DOM的一部分(测试时文档中没有DIV),它是由mootools出于测试目的创建的。当我仅使用此项时,也会发生泄漏:

$$('.someClass').each(function(){}); 
那么我有什么建议:不要使用mootools^



附言:通过mootools-core-1.4.4-full-compat.js、IE6和

进行测试,当我对代码进行注释时,它消失了,但随后又出现了。我会进一步调查,然后更新我的问题,如果我能弄清楚的话。谢谢。当页面被导航到其他位置时,代码片段不会对发生的事情产生任何影响。我不认为那是你的罪魁祸首