Salve,
sto caricando dei file html usando il metodo load() di jquery, e mi domandavo se esiste un modo per determinare nella funzione di callback quando sono state scaricate tutte le immagini inserite nel file html che carico in ajax.
![]()
Salve,
sto caricando dei file html usando il metodo load() di jquery, e mi domandavo se esiste un modo per determinare nella funzione di callback quando sono state scaricate tutte le immagini inserite nel file html che carico in ajax.
![]()
Se ti può semplificare la vita puoi evitare di usare jQuery e crearti tu un costruttore che si comporti in maniera familiare più o meno sul modello di XMLHttpRequest... Qualcosa del genere:
Uso di esempio:codice:function ImageLoader () { } ImageLoader.prototype.onload = null; ImageLoader.prototype.load = function () { var nStatus = 0, oReq = this, aImgs = []; function imgLoaded () { nStatus++; if (nStatus === arguments.length) { if (oReq.onload) { oReq.onload.call(aImgs); } } } for (var oImg, nImg = 0; nImg < arguments.length; nImg++) { oImg = new Image(); oImg.src = arguments[nImg]; oImg.onload = imgLoaded; aImgs.push(oImg); } };
codice:var nuovaRichiesta = new ImageLoader(); nuovaRichiesta.onload = function () { for (var numImg = 0; numImg < this.length; numImg++) { document.body.appendChild(this[numImg]); } }; nuovaRichiesta.load("Tizio.jpg", "Caio.jpg", "Sempronio.jpg", "Brubru.jpg");![]()
Tutto ciò che fai con jQuery puoi farlo meglio e con la metà del codice in puro JavaScript.
In relata mi sono spiegato male, nel senso che io via ajax carico un file html con dentro vari tag: p, h3 e qualche img.
Il problema capita quando dentro questi html chiamo delle immagini "grandi", quindi vorrei una callback che si attivi alla fine dello scarcamento sia dell'html che di tutte le immagini.
Per ora ho risolto creando un array di tutte le immagini presenti in questi file html e poi facendo il controllo load su l'ultima. Sembra funzionare....![]()