2010-10-19 3 views
3

Si j'utilise new Image() pour charger une image en JavaScript, utilisera-t-elle une version en cache si possible, ou la chargera-t-elle toujours?Est-ce que 'new Image()' permet d'utiliser le cache (JavaScript)

var imgObj = new Image(); 
imgObj.src = 'http://...'; 
imgObj.onload = function (loadedImg) { } 
+0

Je voudrais configurer le 'onload' avant si. IIRC il ya quelques bizarreries d'opéra étranges avec au moins 'onerror' et en affichant des événements de manière synchrone contre async. Ma mémoire échoue cependant. –

+0

Si vous ne voulez pas le mettre en cache, ajoutez des paramètres aléatoires à la valeur source, comme: ''image.jpg? Random = '+ new Date(). GetTime()' – Harmen

Répondre

6

Il va charger du cache si elle est là, de la même façon un <img> dans votre balisage serait.

+0

(Ou peut-être pas charger à partir du cache - ces satanés serveurs mal configurés!) –

+0

+1 vous êtes proche de 100k buddy :) – galambalazs

+0

Eh bien, il est proche du siècle des médailles de bronze. – ivorykoder

2

Vous pouvez forcer un rechargement en ajoutant un argument de chaîne de requête bidon. Si votre déclaration attribuant une URL à la propriété src de l'image est

imgObj.src = 'http://www.mySite.com/images/anImage.png'; 

vous pouvez le rendre comme

imgObj.src = 'http://www.mySite.com/images/anImage.png?foo=0'; 

Il suffit de comprendre que sur les charges suivantes, il sera toujours utiliser la copie en cache sauf si vous modifiez la argument de chaîne de requête.

3

Une chose à noter est que si vous voulez onload ça arrive toujours (même quand il est dans le cache) vous devez définir onload avant src.

var imgObj = new Image(); 
imgObj.onload = function (loadedImg) { } 
imgObj.src = 'http://...'; 
+0

Bon point. Merci pour ça. –

Questions connexes