2012-06-06 7 views
6

EDICIÓN: IE versión 7 y 8 no aparece actualizada cambio IMG SRC hecho en JavaScriptIE no está mostrando actualizado cambio IMG SRC hecho en Javascript

Se puede ver lo que quiero decir si vas a la URL a continuación, y a la izquierda debajo de (3) Quiero un liner diferente, tú eliges una de las muestras; digamos que eliges "Asahi Chartreuse". Observe que no sucede nada en la vista previa de la izquierda. PERO si continúa y elige otra muestra, verá la vista previa en el botón izquierdo para mostrar Asahi Chartreuse. Entonces es uno detrás. Es por eso que creo que es un problema de "actualización". Funciona en Chrome muy bien.

En IE: Observe si hace clic en algún otro control, la actualización ocurre.

Puede ver el código aquí: https://www.casemodo.com/test.asp

lo que me he probado hasta ahora:

He intentado añadir cabeceras a decir "no-cache".

He intentado agregar "?" y número aleatorio después del nombre del archivo png.

He intentado establecer el foco() en la imagen después de cambiar el src.

He intentado, después de cambiar src, decirle a style.display que esté oculto y luego visible.

He intentado crear un cuadro de entrada de texto oculto (y no oculto) en la página y luego establecer el foco() después de cambiar img src.

He intentado configurar window.focus().

He intentado (como ve ahora) configurar una alerta después de cambiar el src.

GUESS: Lo que parece ahora es que el motor de JavaScript hace una pausa después de configurar ese src HASTA que haga clic (enfocar) manualmente en otro lugar de la pantalla. Por lo tanto, nunca llega a todos los scripts que he probado anteriormente.

+0

Por favor, muéstranos tu código (html + js) – iddo

Respuesta

0

He visto problemas similares de IE resueltos con una reasignación aparentemente extraña de innerHTML. Supongamos que "contenedor" es una variable que hace referencia al parentNode del img. Pruebe "container.innerHTML = container.innerHTML". Esto desencadena una nueva representación y puede dar vida a la imággen errante.

2

Intente utilizar onclick en lugar de onchange. Este último no funciona bien con algunos elementos de formulario en algunos navegadores.

1

Comentarios sobre la pregunta:

  • por favor incluya un fragmento de código en la pregunta.
  • ¿Estaba el javascript en un evento onchange, o dónde?
  • Si el navegador del cliente es Google Chrome, ¿funciona? (Suena como yet-another-IE-image-src-bug.)
  • La página de demostración a la que se ha vinculado ha cambiado desde que se publicó esta pregunta; mientras escribo esto, al hacer clic en una muestra, se produce un envío que causa la carga de una página diferente.

Una sugerencia:

  • Uso setTimeout, de modo que se produce el cambio real cuando se activa el evento de tiempo de espera, en lugar de en el hilo de eventos GUI originales. Por ejemplo, si el javascript original

    SomeFunction(); 
    

    cambio esto a

    setTimeout(SomeFunction, 10); 
    

    (donde image.src = newURL; se hace dentro de SomeFunction)

7

Establecer el atributo src en nulo, a continuación, establezca a su nueva url:

en jquery :

var myImg = $('#myImg'); 
myImg.attr('src', null); 
myImg.attr('src', newUrl); 

en js rectas:

var myImg = document.getElementById('myImg'); 
myImg.src = null; 
myImg.src = newUrl 

Esto funcionó para mí - me estaba volviendo loco!

+0

Funciona solo una vez :(Entonces IE usa el caché img incluso cuando uso url como http://example.com/img/my.jpg?rand=231123 – Yevgen

Cuestiones relacionadas