salut,
je n'ai pas compris ce que tu cherches à faire ou pourquoi tu le fais de la sorte. Un chargement asynchrone d'images peut se faire d'une manière très simple.
Tu crées une image vierge de 1x1 px, tu ajoutes une balise <img> dans ton code avec un "src" pointant vers cette image vierge. Tu crées ensuite un attribut avec "data-" que tu appelleras par exemple "data-src". Tu récupères ensuite en JS toutes les images ayant cet attribut "data-src" et tu remplaces leur "src" d'origine par celui-ci. Tu ajoutes à chaque fois une balise <noscript> avec l'image ayant le bon "src" au cas où JS serait désactivé et le tour est joué. Tu peux même ajouter des gifs animés de loading directement dans le "src" d'origine pour faire patienter entre temps.
Je te donne un exemple
<img src="http://www.ajaxload.info/cache/FF/FF/FF/00/00/00/5-1.gif" width="32" height="32" data-src="http://img0.gtsstatic.com/wallpapers/a2b02b50666a643129f0c4bc42ef3593_large.jpeg|2560|1600" alt="" />
<noscript>
<img src="image-a-utiliser.jpg" width=1920 height=480 alt="" />
</noscript>
<img src="gif-anime.gif" width="32" height="32" data-src="image-a-utiliser.jpg|1920|480" alt="" />
Les "width/height" sont ceux du gif animé et dans l'attribut "data-src", tu spécifies le chemin vers l'image à charger, suivi de "|", puis de la largeur de l'image à charger, puis d'un autre "|", puis de la hauteur de l'image à charger
(je sais ça peut être un peu tordu mais bon...).
Et le JS qui va avec
function addEvent(a,b,c,d){d = !d && false;(a.addEventListener)?a.addEventListener(b,c,d):a.attachEvent('on'+b,c);}
var imgToLoad = document.querySelectorAll("img[data-src]"),
dataImgCt = [], srcTarget = [], imgWidth = [], imgHeight = [], countLoadedImgs = 0;
for(var i=0, l=imgToLoad.length; i<l; i++){
dataImgCt[i] = imgToLoad[i].getAttribute("data-src");
var idxF = dataImgCt[i].indexOf("|"),
idxS = dataImgCt[i].lastIndexOf("|");
srcTarget[i] = dataImgCt[i].substr(0, idxF);
imgWidth[i] = parseInt(dataImgCt[i].substr(idxF + 1, idxS));
imgHeight[i] = parseInt(dataImgCt[i].substring(idxS + 1));
imgToLoad[i].style.padding =((imgHeight[i]-imgToLoad[i].clientHeight)/2) +"px "+ ((imgWidth[i]-imgToLoad[i].clientWidth)/2) +"px";
}
function allLoaded(){
alert("Fini !");
}
function loadImages(){
var imgTemp = [];
for(var i=0, l=imgToLoad.length; i<l; i++){
imgTemp[i] = document.createElement("img");
imgTemp[i].onload = function(){
var idx = imgTemp.indexOf(this);
imgToLoad[idx].src = this.src;
imgToLoad[idx].width = imgWidth[idx];
imgToLoad[idx].height = imgHeight[idx];
imgToLoad[idx].style.padding = "0";
(imgToLoad[idx].parentNode.className=="loading") && (imgToLoad[idx].parentNode.className="");
countLoadedImgs++;
countLoadedImgs == imgToLoad.length-1 && allLoaded();
}
imgTemp[i].src = srcTarget[i];
}
}
addEvent(window, 'load', loadImages, false);
Lorsque toutes les images sont chargées, la fonction allLoaded() est déclenchée.
Je pense que pour exemple... c'est un bon exemple

[/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i]