2010-12-20 3 views
4

Ich muss ein Bild mit Javascript abfragen und muss eine Aktion ausführen, sobald das Bild an seiner Position gefunden wird. Dies ist der Code, den ich für diese Aufgabe geschrieben habe.Bildabruf durch Javascript

/*----Image handling script starts here----*/ 
var beacon = new Image(); 
beacon.onload = function() { 
    console.log('Image found'); 
    console.log(this.width,this.height); 
    window.clearInterval(timer); 
}; 
beacon.onerror = function(){  
    console.log('Image not found'); 
} 
var timer = window.setInterval(function(){ 
    console.log('sending the request again'); 
    beacon.src = "http://www.google.co.in/logos/2010/lennon10-hp.gif"; 
},2000); 
/*----Image handling script ends here----*/ 

Problem ist, dass nach einer GET-Anforderung, wird die Antwort zwischengespeichert und Anforderung jedes Mal src Ich habe nicht bekommen, gesendet. Wenn Sie die Registerkarte NET untersuchen, sendet sie nur eine Anfrage an den ersten src-Satz und speichert die Antwort zwischen.

Ich muss eine neue Anfrage für Bild jedes Mal senden, wenn mein Code den src setzt. Irgendwelche Problemumgehungen?

Antwort

2

Fordern Sie das Bild jedes Mal mit einer anderen Abfragezeichenfolge an. Der Browser behandelt sie als eindeutige URL und hat sie nicht im Cache. Sie können wahrscheinlich damit durchkommen, weil es wahrscheinlich ist, dass der Webserver irgendetwas in der Abfragezeichenfolge ignoriert, wenn er ein Bild anfordert. Das Folgende sollte 100 Anforderungen machen:

for (var i=0; i<100; i++) 
{ 
    beacon.src = "http://www.google.co.in/logos/2010/lennon10-hp.gif?" + i; 
} 
4

Ändern Sie Ihre Quelle, um die aktuelle EPOCH-Zeit als eine Variable zu enthalten.

beacon.src = "http://www.google.co.in/logos/2010/lennon10-hp.gif?" + 
    date.getTime(); 

eine andere Variable in dem Abfrage-String jedes Mal verwendet, wird das Caching zu kurz kommen, denn soweit der Browser betroffen ist, das Bild ist anders (oder könnte möglicherweise sein) jedes Mal, wenn Sie das Bild anfordern, und es ist keine Grenze für die Anzahl der Zeiten, die Sie fragen, als Zeit hoffentlich wird nicht aufhören ...