Javascript: Annulla / ferma le richieste di immagini

Ho un sito web che fa un uso pesante di Ajax. Occasionalmente ho bisogno di caricare file di immagine di grandi dimensioni sulla pagina per l’utente. La mia domanda è, quando questi file di immagine di grandi dimensioni vengono scaricati, c’è un modo per fermarli se, per esempio, l’utente si allontana dalla pagina che mostra l’immagine? Grazie.

Ho avuto lo stesso identico problema, quando gli utenti “cercavano” rapidamente attraverso (ajax) risultati di ricerca il browser stava ancora cercando di scaricare le immagini del profilo per ogni pagina e non solo quella corrente. Questo codice ha funzionato per me, ha chiamato l’evento di paging poco prima che la nuova ricerca venisse eseguita:

//cancel image downloads if(window.stop !== undefined) { window.stop(); } else if(document.execCommand !== undefined) { document.execCommand("Stop", false); } 

Essenzialmente è come fare clic sul pulsante “Stop” nel browser.

Testato su IE, FireFox, Chrome, Opera e Safari

come questo.

 $(img).attr('src',''); 

Supponendo che stai usando ajax per caricare le immagini, potresti semplicemente interrompere la richiesta nell’evento window.onunload . Dichiarare una variabile globale per l’object XMLHttpRequest che si sta utilizzando.

 var xhr; //if using the XMLHttpRequest object directly //you may already be doing something like this function getImage(...){ xhr = new XMLHttpRequest(); xhr.open(....); } 

se si utilizza jQuery, è ansible assegnare il valore di ritorno della chiamata $ .ajax () o $ .get alla variabile xhr.

 xhr = $.ajax(.....); 

Gestire window.onunload e interrompere la richiesta.

 window.onunload = function(){ xhr.abort(); } 

La riassegnazione del tag SRC a un’immagine diversa non funziona in IE7, continua a provare a scaricare la prima immagine.

Ecco la configurazione:

Ho creato un gestore HTTP di tipo JPEG. Contiene codice che non termina mai l’esecuzione. Quindi someImage.src = myhandler.ashx rimarrà perennemente lì carico fino a quando scade.

Nel mezzo di questo, premi un altro pulsante che riassegna l’immagine a un piccolo file di immagine: someImage.src = small.jpg

La richiesta di myhandler.ashx non termina, anche se abbiamo riassegnato lo src.

Inoltre se si elimina effettivamente il nodo someImage.parentNode.removeChild (someImage) continua a provare a scaricare myhandler.ashx

Testato con IE7 e monitorato con HTTP Watch Pro.

La soluzione povera sarebbe semplicemente impostare la proprietà SRC del tag immagine su una stringa vuota o puntarla verso un widget.

modificare

Ho visto il tuo commento, sorpreso che non funzioni cambiando la proprietà SRC per svuotare … prova ad usare un blank.gif o qualcosa del genere.

Se ciò non funziona, potresti essere limitato dall’architettura del browser, il che significa che sei SOL