2012-08-04 46 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); 
相关问题