2012-05-01 11 views
7

Ho alcuni pixel di tracciamento sul nostro sito, che mi piacerebbe proteggere contro di loro che hanno un impatto sulla nostra esperienza utente se i loro server sono inattivi o lenti. Qual è il modo più semplice per specificare il tempo massimo in cui il browser dovrebbe tentare di caricare una determinata immagine, ad esempio provare per 100 ms e poi rinunciare? (Preferirei non tenere traccia di un dato cliente piuttosto che avere un blocco del server sul server di terze parti che ha un impatto sul nostro sito).<img src> w/timeout?

risposta

2

caricarli quando il documento è pronto. o alla fine (nell'html). in questo modo, non danneggerà l'esperienza dell'utente. documento pronto può essere utilizzato anche con jQuery.

ma è possibile utilizzare window.load.

di norma (non sempre) - tutti gli script devono essere alla fine della pagina.

se si vuole forzare time out KILL:

creare un tag img.

allegare l'evento load alla IMG (questa funzione impostare il flag: scaricato = 1;)

impostare lo src.

con setTimeout Funzione per uccidere l'img.

come?

se dopo X MS il download == 0 quindi kill.

così: ogni evento di caricamento (dall'IMG) sta impostando un flag (scaricato = 1).

la tua funzione di timeout non ti interessa niente !!! dopo x MS ha intenzione di uccidere l'img - solo se scaricato == 0.

+0

Sì, ma la barra di stato mostra ancora i dati scaricati, quindi sembra incompiuta. Mi piacerebbe davvero avere un modo reale per definire un timeout. –

+0

@MichaelReston vedi la mia modifica. –

+1

Perché preoccuparsi della condizione piuttosto che rimuovere il '' comunque? – Electro

-1

È possibile chiamare un processo del server nel tag IMG. Lascia che si preoccupi di mettere fine al carico.

+0

C'è già un processo del server nel tag: fornisce "immagine". È quello che richiede tempo e che deve essere annullato nel client. Se la cancellazione viene consegnata al server, la cancellazione richiederà del tempo. –

+0

Quindi infilarlo e guardare l'orologio. – ethrbunny

3

È possibile inserire lo <img> con JavaScript e utilizzare setTimeout() per rimuoverlo dopo 100 ms.

Esempio con jQuery:

var tracker = $("<img>", { src: trackingUrl }).appendTo(document.body); 
setTimeout(function() { tracker.remove(); }, 100); 
0

Si dovrà utilizzare javascript per fare questo, non c'è niente nativo di HTML/HTTP che avrebbe fatto questo su base pagina. Google in giro per "Timeout HTML IMG".

Problemi correlati