2012-11-03 10 views
5

se uso la sintassi jQuery: $("<img src='img.jpg'>"), l'immagine verrà effettivamente scaricata sul client? o devo appenderlo al corpo per scaricarlo?

risposta

6

Non è necessario aggiungere l'elemento immagine al documento per l'immagine da caricare.

L'elemento immagine stesso richiederà l'immagine non appena la si crea (e non appena ha un valore src).

Guarda l'acivity netto (in Firebug Tools/Developer) quando si esegue questo: http://jsfiddle.net/Guffa/AvgVN/

Google "javascript preload" per trovare tonnellate di esempi di codice che utilizza questo.

+0

Ho pensato che fosse sbagliato ma non lo è! Ora ricordo che gli script di "preloader di immagine" degli ultimi anni '90 funzionavano anche in quel modo. –

+0

Anch'io. Il fatto è che è in realtà scaricato immediatamente! – techfoobar

5

Sì, l'immagine verrà scaricata immediatamente.

Anche se l'elemento Image che è stato creato non è ancora nel DOM, il browser inizierà comunque a scaricarlo non appena è impostato l'attributo .src.

Utilizzando il proprio avatar, ho appena fatto questo nella console:

> i = $('<img src="http://graph.facebook.com/100002351317104/picture?type=large">'); 
... 
> i[0].width 
180 

mostrando che l'immagine è effettivamente caricato.

Se ci pensi, questo in realtà deve essere il caso altrimenti il ​​pre-caricamento dell'immagine non potrebbe mai funzionare. Il precaricamento delle immagini dipende dalla creazione di un nodo distaccato Image e dall'impostazione di src, che è esattamente ciò che farà lo $("<img src=...>").

+0

+1 È * effettivamente * scaricato immediatamente! – techfoobar

2

Direi di sì, o forse dipende dal browser.

$("<img src='http://crssrd.com/web_apps/index/themes/crssrd.com/images/loading.gif'>")​ 

Verifica questo su Chrome per esempio: http://jsfiddle.net/SMnhU/ immagine è immediatamente scaricato.

+0

Puoi fornire un esempio in cui un browser non esegue immediatamente il download dell'immagine? –

+0

No, tutti i browser che ho provato lo scaricano istantaneamente. Ma non ho provato l'opera per esempio, ma sarei davvero sorpreso se fosse diverso per questo browser. –

+0

Quindi forse è sicuro dire che non dipende dal browser :) –

Problemi correlati