2012-05-15 33 views
1

我試圖通過每100毫秒更換一次圖像的src來實現一個使用Javascript的動畫PNG。它顯示得很好,但是我發現它在Firefox上運行時逐漸消耗越來越多的內存。快速替換圖像時在Firefox中的內存使用情況src

這是循環我使用的播放動畫,雖然我不認爲有什麼壯觀吧 -

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中),但它似乎沒有幫助。

任何人都知道更好的方法?

感謝您的時間:)

+0

你是說這個問題只存在於Firefox中,即它可以在其他瀏覽器中使用? – nnnnnn

+0

它似乎在Chrome上運行良好,但我還沒有嘗試過任何其他主流瀏覽器。 – fluke

+1

這是一個荒謬的想法。 – mowwwalker

回答

2

你有沒有想過只使用圖像和更改後臺的滾動? 它的真快,並建議

看看這個

http://willian.nerdti.com.br/botaoImagem.html

+0

我以前見過這樣做,不知道爲什麼它沒有發生在我身上!感謝您的建議,我會研究它:) – fluke

0

這不是一個回答這個問題,而是另一個評論(我不能離開,因爲我的StackOverflow上的聲譽是目前不50)。無論如何,我注意到上面的人(在評論部分)說這是一個荒謬的想法。對於這種特殊情況,他可能是對的,但是這種內存泄漏已經在我們的應用中以一種完全無法預料的方式提升了它的頭(並且導致我們放棄了FireFox)。

基本上,我們的應用程序有一個左側導航欄,其中包含我們組織中各種人物的小化身。這個左邊的導航欄可以被過濾,排序,更新等。這個欄可以(有時)包含幾百個圖像,並且在這個欄的每次洗牌時,FireFox將一個剪輯放鬆500K到1MB,而IE9/10,Chrome和Safari不會鬆動一件事。

所以,直到這個錯誤被修復,FireFox(用於我們的內部應用程序)不再是一個可行的選擇。