2012-06-06 7 views
6

NUMERO: IE versione 7 e 8 non sta mostrando aggiornato cambiamento IMG SRC fatto in JavaScriptIE non sta mostrando aggiornato cambiamento IMG SRC fatto in Javascript

Si può vedere quello che voglio dire se si va al seguente URL, e a sinistra sotto (3) Voglio un rivestimento diverso, scegli uno dei campioni; diciamo che hai scelto "Asahi Chartreuse". Notare che non succede nulla all'anteprima a sinistra. MA se poi vai avanti e scegli un altro campione, vedrai l'anteprima sul lato sinistro per mostrare Asahi Chartreuse. Quindi è uno dietro. Questo è il motivo per cui credo che sia un problema di "aggiornamento". Funziona bene in Chrome.

In IE: avviso se si fa clic su un altro controllo, si verifica l'aggiornamento.

È possibile vedere il codice qui: https://www.casemodo.com/test.asp

quello che ho provato finora:

Ho provato ad aggiungere intestazioni a dire "no-cache".

Ho provato ad aggiungere "?" e un numero casuale dopo il nome del file png.

Ho provato a mettere a fuoco() l'immagine dopo aver cambiato il src.

Ho provato, dopo aver cambiato src, dicendo allo style.display di essere nascosto e quindi visibile.

Ho provato a creare una casella di testo nascosta (e non nascosta) sulla pagina e quindi l'impostazione di focus() su di essa dopo aver modificato img src.

Ho provato a impostare window.focus().

Ho provato (come si vede ora) impostando un avviso dopo aver cambiato il src.

GUESS: Ciò che sembra ora è che il motore JavaScript si ferma solo dopo aver impostato che src FINO A che fai clic manualmente (messa a fuoco) da qualche altra parte sullo schermo. Quindi non arriva nemmeno a tutti quegli script che ho provato sopra.

+0

Mostraci il tuo codice (html + js) – iddo

risposta

0

Ho visto problemi di IE simili risolti con una riassegnazione apparentemente bizzarra di innerHTML. Supponiamo che "container" sia una variabile che fa riferimento al parentNode di img. Prova "container.innerHTML = container.innerHTML". Questo innesca un re-rendering e può portare in vita l'img errante.

2

Prova a utilizzare onclick anziché onchange. Quest'ultimo non funziona bene con alcuni elementi del modulo in alcuni browser.

1

Commenti sulla domanda:

  • Si prega di inserire un frammento di codice nella questione.
  • Il javascript era un evento onchange o dove?
  • Se il browser client è Google Chrome, funziona? (Sembra ancora un altro IE-image-src-bug.)
  • La pagina di dimostrazione a cui è stato effettuato il collegamento è stata modificata da quando è stata inviata questa domanda; mentre scrivo questo, facendo clic su un campione, viene inviato il messaggio che causa il caricamento di una pagina diversa.

Un suggerimento:

  • Uso setTimeout, cosicché si verifica la variazione effettiva quando l'evento timeout, trascurando il filo evento GUI originale. Ad esempio, se il JavaScript originale era

    SomeFunction(); 
    

    cambiamento ciò

    setTimeout(SomeFunction, 10); 
    

    (dove image.src = newURL; avviene all'interno SomeFunction)

7

impostare l'attributo src null, quindi impostare al tuo nuovo URL:

in jquery :

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

in js rette:

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

Questo ha funzionato per me - mi stava facendo impazzire!

+0

Funziona solo una volta :(Quindi IE usa cache img anche quando uso url come http://example.com/img/my.jpg?rand=231123 – Yevgen