2010-07-26 5 views
5

Ho un elemento img nel mio DOM. Sulla base dell'azione dell'utente, computo un URL per un'immagine e cambio l'attributo src dell'elemento dell'immagine (usando jQuery). La nuova immagine ha una dimensione diversa dalla vecchia immagine. Questo funziona bene su Safari, ma IE non ridimensiona il display per le dimensioni della nuova immagine. Ho un gestore di .load sul cambiamento di src (nel quale apporto alcune modifiche alla classe dell'elemento img) ... se sapessi come accedere alle dimensioni reali dell'immagine, potrei impostare le proprietà di altezza e larghezza degli elementi img. Quei valori sono accessibili da qualche parte in qualche modo? In caso contrario, c'è un altro modo per avere l'immagine visualizzata nelle sue nuove dimensioni?La modifica della sorgente di un tag immagine (img) non viene ridimensionata su IE

risposta

0

vorrei studiare altre soluzioni, ma si può infatti accedere a queste informazioni direttamente

var myImage = new Image(); 
myImage.src = $("image selector goes here").attr('src'); 
myImage.onload = function() { 
    alert(myImage.width + "," + myImage.height); 
} 
+1

Grazie per il suggerimento, ma purtroppo quando * cambiamento * src e dell'immagine caricare un'immagine di un nuovo formato, l'elemento img segnala ancora la larghezza e l'altezza iniziale, non l'immagine appena caricato (sul IE, cioè, come ho detto, l'immagine viene ridimensionata da Safari). – Zhami

+0

Prova a caricare l'immagine con url direttamente rispetto al metodo 'attr ('src')'. Quindi qualcosa come 'myImage.src =" http://example.com/awesome.gif "quindi controlla la larghezza. Non riesco a vedere come questo potrebbe riportare la stessa larghezza, dal momento che dovrebbe esserne inconsapevole. Questo è un po 'di dolore dal momento che invia due richieste al tuo server per l'immagine, ma non dovrebbe essere un problema se c'è il caching. –

+0

Il mio sospetto è che il motore di rendering abbia layout con la prima immagine. I carichi dell'immagine successiva non forzano il relayout. Ho riscritto il mio intero approccio per evitare questo problema. – Zhami

1

Ho avuto lo stesso problema, ma questo ha preso cura di esso.

$("#img").removeAttr("height").removeAttr("width").attr("src", newsrc); 
+0

Non vedo come funzionerebbe. Correggimi se sbaglio, ma da quello che posso vedere in altezza e larghezza non sono attributi DOM, tuttavia lo stile è. Rimozione di "stile" funziona in Chrome, vedere la mia risposta. – tronbabylove

3

sto lavorando in Chrome, non IE, ma ho avuto lo stesso problema e ho pensato condividere per chiunque altro che si imbatte in questa domanda. Ho risolto questo rimuovendo l'attributo "stile" della immagine prima di cambiare la sorgente, cioè .:

myImg.removeAttribute ('stile') setAttribute ('src', newsrc).;

+0

funziona come un fascino. –

Problemi correlati