Javascript 快速替换图像src时Firefox中的内存使用

Javascript 快速替换图像src时Firefox中的内存使用,javascript,firefox,Javascript,Firefox,我试图用Javascript实现一个动画PNG,每100毫秒替换一个图像的src。它显示得很好,但我发现当它在Firefox上运行时,它会逐渐消耗越来越多的内存 这是我用来播放动画的循环,尽管我不认为它有什么惊人之处- self.next = function() { if(self.doPlay == true) { self.currentFrame++; if(self.currentFrame >= self.numFrames) {

我试图用Javascript实现一个动画PNG,每100毫秒替换一个图像的src。它显示得很好,但我发现当它在Firefox上运行时,它会逐渐消耗越来越多的内存

这是我用来播放动画的循环,尽管我不认为它有什么惊人之处-

self.next = function() {
    if(self.doPlay == true) {
        self.currentFrame++;
        if(self.currentFrame >= self.numFrames) {
            self.currentFrame = 0;
            self.doPlay = self.doLoop;
        }
    }
    if(self.doPlay == true) {
        image.src = self.frames[self.currentFrame].src;
        setTimeout( self.next, self.frameDelays[self.currentFrame]);
    }
}
(其中帧是预加载图像对象的数组)

如果我注释掉src中的更改,内存使用就可以了。否则,内存使用将无限期地增加,直到浏览器最终崩溃

我尝试从DOM中删除和替换图像,而不是更改src(在香草和jQuery中),但似乎没有帮助

有人知道更好的方法吗


感谢您的时间:)

您是否想过只使用图像并更改背景中的滚动条? 它真的很快,值得推荐

看这个


这不是对这个问题的回答,而是另一个评论(我不能离开,因为我的StackOverflow声誉目前还没有达到50)。无论如何,我注意到上面有人(在评论部分)说这是一个荒谬的坏主意。对于这个特定场景,他可能是对的,但这次内存泄漏以一种完全出乎意料的方式在我们的应用程序中引起了轩然大波(并导致我们一起放弃FireFox)

基本上,我们的应用程序有一个左侧导航栏,其中包含我们组织中不同人员的小化身。这个左侧的导航条可以被过滤、排序、更新等等。这个导航条(有时)可以包含几百个图像,每次移动这个导航条,FireFox就会释放500K到1MB的片段,而IE9/10、Chrome和Safari则不会释放任何东西


因此,在修复此错误之前,FireFox(用于我们的内部应用程序)不再是一个可行的选项。

你是说问题只存在于FireFox中,即它在其他浏览器中工作?它在Chrome上似乎工作得很好,但我还没有在任何其他主要浏览器上尝试过。这是一个荒谬的坏主意。@Walkereno如果你有时间,你能详细说明一下吗?如果没有的话,还是谢谢你抽出时间(这是很奇怪的行为。这里不应该有任何持续的内存增长。我假设您可以在安全模式或干净的配置文件(即禁用所有扩展)下复制此文件?如果是这样的话,你可以发布一个完整页面的链接来显示问题,这样我就可以调试它了吗?一旦我明白了为什么你会看到你所看到的,我可能会推荐一种解决方法……我以前见过这种情况,不知道为什么我没有想到!谢谢你的建议,我会调查的:)