2009-10-19 8 views
26

Qual è il modo migliore per impostare un'immagine di fallback locale se l'immagine esterna non viene caricata o richiede troppo tempo per essere caricata.Immagine di fallback e timeout - Contenuto esterno. Javascript

+0

Brillante! Stavo per fare la stessa domanda e ho fatto una rapida ricerca su google e ho trovato questa domanda. Stavo pensando di farlo lato server, ma il lato client sembra molto più semplice. – Skilldrick

risposta

43

È possibile aggiungere un gestore oneror:

<img src="http://example.com/somejpg.jpg" 
    onerror='this.onerror = null; this.src="./oops.gif"' /> 

Nota impostazione onerror per nulla nel gestore in modo che il browser non muore se oops.gif non può essere caricato per qualche motivo.

+0

Oh, ho dimenticato di onerror. Questo potrebbe essere più semplice, ma la soluzione che ho postato di seguito consente di precache le immagini e di verificarne la disponibilità prima di visualizzarle. Dipende da cosa ti serve ... – moxn

+0

Fantastico! Adoro quando imparo nuovi trucchi come questo. Stavo per ricorrere a un pasticcio jQuery jiggery. – MikeMurko

+0

Il problema qui è il tempo entro cui l'immagine viene considerata non disponibile! Potrebbe volerci molto tempo prima che il caricamento dell'attività del browser funzioni fino a quando non invoca l'evento 'onerror'. – SaidbakR

2

Provare a utilizzare la proprietà Image.complete.

var img = new Image(w,h) 
img.src = "http://..."; 

Ora controllare periodicamente se img.complete è vero e lo chiamano alcuni meccanismo di fallback shuold ancora essere false dopo n secondi.