2012-08-04 14 views
6

Estoy modificando algunas imágenes en lienzo y luego estableciendo src de estas imágenes en nuevas imágenes codificadas en base64.Forzar que firefox vuelva a cargar la imagen después de cambiar img.src

img.src = changeColor(img); 

changeColor vuelve base64 imagen codificada:

return canvas.toDataURL(); 

Chrome y Opera son imágenes refrescante después de un cambio src, pero Firefox no lo hacen! ¡También inspeccioné el elemento de la imagen por FireBug, y muestra un nuevo src y una nueva imagen!

Ya he intentado agregar datos a la URL pero uhh ... esta es una imagen codificada en base64, no una url, por lo que rompe mis imágenes por completo.

¿Hay alguna manera de forzar la recarga de imágenes o desactivar el caché de Firefox a través de javascript?

ACTUALIZACIÓN: También he intentado establecer image.src = ''; en la función changeColor. Funciona en cromo, pero en Firefox ... la imagen desaparece y no aparece de nuevo cuando establezco el valor base64 nuevo.

+1

Publica algún código por favor. – Samson

+0

Realmente no puede ayudar sin ver el código relevante para entender las opciones. – jfriend00

+0

Si se trata de una imagen codificada en base64, no puede tratarse de un problema de caché, ya que si la imagen cambia, los datos de base64 cambiarán. ¿O me estoy perdiendo algo? Quizás quitar y agregar el elemento dom de imagen nuevamente sea algo que podrías probar. (o configure el src en "" y luego en sus datos reales, no sé si eso ayuda, pero vale la pena intentarlo) – Preli

Respuesta

0

Intente agregar el formato de imagen (y use jpg). Se puede volver a codificar la imagen:

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

Está funcionando correctamente en la mayoría de los navegadores, pero en firefox no . –

+1

Intenta agregar un "?" (query string sign) al final de su src. No estoy seguro si esto ayudaría en este caso, pero recuerdo que me salvó una vez cuando tuve un problema similar con FF. – dmmd

+0

Lo he intentado ... "?" rompe datos de imagen. Es porque src IS datos de imagen, no una URL estándar. –

1

Está funcionando para mí como @dmmd mencionado. Solo necesita agregar cadena de consulta con un valor aleatorio.

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

Esto funcionó para mí –

1

No estoy usando datos de imagen, pero esto trabajé para un problema similar donde FF no estaba recargando cuando la variable src no cambió:

image.src = ""; 
setTimeout(function(){ 
    image.src = //the new image src 
}, 0); 
Cuestiones relacionadas