2010-05-14 44 views
9

我有一個循環三次的動畫GIF。我注意到在Firefox和Chrome中(沒有檢查過其他人)我可以查看GIF一次,然後如果重新加載頁面,緩存的GIF根本就不是動畫。高速緩存後不能在FireFox中使用動畫GIF

有沒有解決方案?有什麼關於動畫GIF,我可以改變,以防止這種情況發生?

回答

0

您能否指點我們的問題GIF?所有使用的GIF都會發生嗎?全部使用相同的應用程序?

無論如何,只是不緩存和瞧,解決了。但我認爲你應該使用另一個應用程序創建你的GIF,看看它是否正常工作。

1

我在這種情況下選擇的解決方案是將GET變量附加到圖形名稱的末尾,防止頁面刷新時從緩存中重新加載圖形。

var myImg = new Image(); 
myImg.src = "image.gif?rnd=" + Math.random(); 
-5

Firefox,可以強制完全重新加載(重新加載緩存)與按Ctrl + Shift + RCtrl + F5鍵

Chrome,這是Ctrl + F5鍵Shift + F5

+1

他從程序員的角度提出這個問題。你從用戶的角度回答。作爲程序員,他不能要求用戶「強制完全重裝」:) – Octavian 2014-06-17 14:13:39

3

它的超級醜陋的解決方案,但你可以使用這個,如果你調用圖像內聯,不漂亮,但它的作品!

<img src="filename.gif?rand=<?=rand(1,1000);?>" alt="" /> 

希望幫助

+0

真棒解決方案。不要認爲它是醜陋的。優雅真的。 :) – Foxinni 2012-12-07 07:36:16

+1

應該指出,這是PHP。 – Jerome 2013-11-15 13:54:47

1

玉奧康納的解決方案作品,但如說這是一個醜陋的解決方案。 因爲每次訪問頁面,都會從服務器下載圖像。這導致大圖像的帶寬問題。這也增加了頁面加載時間,因此這對連接速度慢是不利的。

有沒有更好的解決方案?

我想通了,這樣的事情:

我再生GIF動畫在循環「永遠」模式。在我的gif中,有20個幀,每個幀顯示150毫秒。所以循環的一個步驟持續3秒。我還創建了動畫最後一幀的jpeg版本。

當頁面加載時我使用window.setTimeout()方法在3秒後用jpeg替換gif。因爲,當循環的第一步完成時,我希望最後一幀靜止不動。但是有計時問題。當顯示最後一幀時,動畫重新開始,然後我可以用jpeg替換gif。有沒有辦法檢測動畫是完成還是重新啓動?