2012-08-04 45 views
6

我正在修改畫布上的某些圖像,然後將此圖像的src設置爲新的base64編碼圖片。強制firefox在img.src更改後重新加載圖像

img.src = changeColor(img); 

changeColor返回的base64編碼的圖像:

return canvas.toDataURL(); 

Chrome和Opera是SRC變更後清爽的圖像,但Firefox不! 我還檢查了FireBug的圖像元素,它顯示了新的src和新圖像!

我已經嘗試添加數據到網址,但呃......這是一個base64編碼的圖像,而不是一個網址,所以它完全打破了我的照片。

我有什麼辦法強制重新加載圖像或通過JavaScript禁用Firefox緩存?

更新: 我也嘗試設置image.src ='';在changeColor函數中。 它在鉻中工作,但在Firefox ...圖片消失,並且當我設置新的base64值時不會再次出現。

+1

張貼一些代碼,請。 – Samson 2012-08-04 16:00:56

+0

如果沒有看到相關的代碼來理解選項,不能真正幫助您。 – jfriend00 2012-08-04 16:04:59

+0

如果它是一個base64編碼圖像,它不能成爲緩存問題,因爲如果圖像發生變化,base64數據將會改變。或者我錯過了什麼?也許刪除並添加圖像DOM元素是你可以嘗試的。 (或者將src設置爲「」,然後設置爲實際數據,不知道是否有幫助,但值得一試) – Preli 2012-08-04 16:06:05

回答

0

嘗試添加圖像格式(並使用jpg)。它可能會重新編碼圖像:

return canvas.toDataURL('image/jpg'); 
+0

它在大多數瀏覽器上正常工作,但在Firefox中不。 – 2012-08-04 16:38:22

+1

嘗試添加「?」 (查詢字符串符號)在您的src結尾。不知道在這種情況下它是否會有所幫助,但我記得當我遇到類似FF的問題時,它救了我一次。 – dmmd 2012-08-04 16:44:32

+0

我試過......「?」打破圖像數據。這是因爲src是圖像數據,而不是標準的URL。 – 2012-08-04 18:56:12

1

它爲我工作,因爲@dmmd提到。您只需要添加具有隨機值的查詢字符串。

id.src = "path?t=t"+ Math.random(5); 
+0

這對我有用 – 2015-06-24 18:50:44

1

我不使用的圖像數據,但這個工作了,其中FF當SRC變量並沒有改變不重裝一個類似的問題:

image.src = ""; 
setTimeout(function(){ 
    image.src = //the new image src 
}, 0); 
相關問題