Foros del Web » Programando para Internet » Javascript »

Problema para refrescar una imagen, sólo funciona en IE

Estas en el tema de Problema para refrescar una imagen, sólo funciona en IE en el foro de Javascript en Foros del Web. Hola Estoy haciendo pruebas con un foro SMF y he notado que hay un bug a la hora de registrarse. Justo al lado de la ...
  #1 (permalink)  
Antiguo 26/09/2006, 10:34
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 22 años, 2 meses
Puntos: 55
Problema para refrescar una imagen, sólo funciona en IE

Hola

Estoy haciendo pruebas con un foro SMF y he notado que hay un bug a la hora de registrarse. Justo al lado de la imagen de verificación visual hay un link que permite refrescar la imagen por si el usuario no la comprende.

Código:
<img src="http://www.mundodivx.org/smf/index.php?action=verificationcode;rand=ba9724a7711731a1489a5f29a7d26fd3" alt="" id="verificiation_image" />

<a href="http://www.mundodivx.org/smf/index.php?action=register" onclick="refreshImages(); return false;">Pedir otra imagen</a>
La función javascript a la que se llama al pinchar el enlace es la siguiente:

Código:
function refreshImages()
{
	document.getElementById('verificiation_image').src = 'http://www.mundodivx.org/smf/index.php?action=verificationcode;rand=ba9724a7711731a1489a5f29a7d26fd3';
}
El problema es que la imagen sólo se refresca en IE. He probado también en Firefox y en Opera, y no hace nada. Sospecho que como la ruta de la imagen dentro del tag <img> y dentro de la de la función javascript es la misma, estos navegadores ven que no tiene sentido actualizar y no lo hacen (quizá lo guardan en el caché). Sin embargo, la imagen sí debe cambiar en cuanto se actualice, pues como veis en el código lo que se hace realmente es llamar a un script php encargado de generar la imagen, distinta cada vez.

¿Cómo podría solucionar esto?

Gracias y un saludo
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.
  #2 (permalink)  
Antiguo 26/09/2006, 10:59
 
Fecha de Ingreso: julio-2005
Mensajes: 220
Antigüedad: 18 años, 9 meses
Puntos: 0
No estoy muy seguro de esto pero...

has probado a poner el signo de la interrogación delante de la variable rand.
Código:
function refreshImages()
{
	document.getElementById('verificiation_image').src = 'http://www.mundodivx.org/smf/index.php?action=verificationcode?rand=ba9724a7711731a1489a5f29a7d26fd3';
}
y asegurate de que el valor de rand cambia cada vez, es decir, es aleatorio.
  #3 (permalink)  
Antiguo 26/09/2006, 12:31
 
Fecha de Ingreso: diciembre-2003
Mensajes: 1.583
Antigüedad: 20 años, 4 meses
Puntos: 13
Para cambiar el valor de un atributo de cualquier elemento (en este caso el atributo SRC de una imagen) utiliza el método setAttribute:

Código:
document.getElementById('algo').setAttribute('src', 'la_url');
  #4 (permalink)  
Antiguo 26/09/2006, 12:45
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 22 años, 2 meses
Puntos: 55
Gracias por las respuestas, las he probado pero no han funcionado

Al final lo he conseguido a base de insistir. Lo que he hecho es pasarle un segundo atributo aleatorio (que es completamente irrelevante) a la imagen de la función javascript, de tal forma que al pinchar en el link las imágenes siempre son distintas y el navegador siempre la recarga

Código:
function refreshImages()
{
	document.getElementById('verificiation_image').src = 'http://www.mundodivx.org/smf/index.php?action=verificationcode?rand=ba9724a7711731a1489a5f29a7d26fd3;' + Math.random();
}
Saludos
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:37.