Ecco il codice:JavaScript: come cambiare sorgente di immagini senza l'emissione di due richieste HTTP
<div id="wrapper">
<img src="lowres/image123.jpg">
</div>
premesse: L'elemento <img>
è generato da un backend sistema proprietario e utilizza un'immagine a bassa risoluzione come sorgente. Posso solo operare su di esso utilizzando puro javascript (senza jquery!).
ho bisogno di cambiamento de src
attributo per una versione ad alta risoluzione si trova in un server esterno, ad es .: src="//cdn.provider.com/highres/image123.png"
(immagini hanno lo stesso nome ma luoghi diversi).
IL PROBLEMA: farlo dopo <img>
inserimento nel DOM emette 2 (due) le richieste HTTP, uno per l'immagine a bassa risoluzione e altro per le highres - e ho un sacco delle immagini sulla pagina!
Per FIX IT, mi chiedevo se è possibile manipolare <img>
appena prima del suo inserimento in DOM per cambiare src
appropriato, ad esempio da intercettare un evento <img>
"beforeInsertion" o un evento " afterInsertion " dello <div>
che lo avvolge.
Cheers!
UPDATE 1: per chiarire le cose: 1) Non ho accesso al lato back-end/server; 2) Non voglio visualizzare l'immagine a bassa risoluzione, solo l'alta risoluzione; 3) Non conosco il nome del file in anticipo, ho bisogno di ottenerlo dallo <img>
e aggiungerlo al percorso della versione ad alta risoluzione memorizzata nel CDN (entrambe le immagini hanno lo stesso nome); e 4) Posso farlo con il codice sotto, ma al costo di TWO richieste HTTP, che è quello che voglio evitare e che cosa ha motivato questa domanda! ;)
var img = document.getElementById("wrapper").childNodes[0];
img.src = getHighResolutionImagePath(img.src);
Quali sono i requisiti per quando l'utente riceve un'immagine a bassa o ad alta risoluzione? Puoi utilizzare le query multimediali CSS e un'immagine di sfondo anziché un vero tag 'img'? – CodingIntrigue
Hai intenzione di cambiare tutte le risorse esterne sulla pagina, o solo alcune. Se è tutto, potresti essere in grado di fare qualcosa con l'elemento https://developer.mozilla.org/fr/docs/Web/HTML/Element/base (se controlli il numero
della tua pagina) – Xavier@RGraham: 1. nessun requisito, ho solo bisogno di sostituire e immagine obsoleta e deprecata, e non ho accesso back-end per cambiarlo sul lato server, a una nuova versione con risoluzione più alta (non so se ho capito bene il tuo domanda). 2. Penso che le query multimediali non saranno utili. 3. Il '
' nel frammento di codice, con l'immagine lowres, viene generato dal backend e non ho alcun controllo su di esso. Tuttavia, posso usare background-image per visualizzare la versione highres. –
tdelboni