Preload de imagens do dom e css com JQuery.
Bom dia a todos!
Gostaria de apresentar um script que eu desenvolvi para um pré-carregamento de imagens.
Este script faz um pre-carregamento tanto das imagens que estão no DOM quanto as que estão no css. Caso você tenha o plugin Firebug em seu Firefox, no console irá retornar algumas informações como quantas imagens foram localizadas, quais já foram carregadas, quais retornaram erros etc.
Um abraço a todos!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | // Preload automático de imagens // Por Diego Marques // Agência DMK dmPreLoadImg = function(){ dmLog = true; dmImgPreLoad = new Array(); // Pega dados das tags imgs $("img").each(function(){ dmRepetido = false; dmSrc = $(this).attr("src"); $.each(dmImgPreLoad,function(pos,valor){ dmRepetido = dmRepetido == true || dmSrc == valor ? true : false; }); if(!dmRepetido) dmImgPreLoad.push(dmSrc); }); // Pega dados dos css dmTotalCSS = $("link").length; dmTotalCSSok = 0; $("link").each(function(){ caminhoCSS = $(this).attr("href"); dmCaminho = ""; dmNiveis = caminhoCSS.split("/"); dmNiveis = dmNiveis.length > 1 ? dmNiveis.length - 1 : 0; if(dmNiveis > 0){ for(i=0;i<dmNiveis;i++){ dmCaminho += "../"; } } $.ajax({ url:caminhoCSS, success: function(retorno){ retorno = retorno.split(/[()'"]/); // Comentario para consertar o syntax highlight: ' $.each(retorno,function(pos,valor){ dmRepetido = false; dmExtencao = valor.replace(/\s+/g," "); dmExtencao = dmExtencao.replace(/^ /,""); dmExtencao = dmExtencao.replace(/ $/,""); dmExtencao = dmExtencao.slice(dmExtencao.length-4).replace(".",""); if(dmExtencao == "jpg" || dmExtencao == "jpeg" || dmExtencao == "gif" || dmExtencao == "png"){ $.each(dmImgPreLoad,function(pos2,valor2){ dmRepetido = dmRepetido == true || valor.replace(dmCaminho,"") == valor2 ? true : false; }); if(!dmRepetido) dmImgPreLoad.push(valor.replace(dmCaminho,"")); } }); dmTotalCSSok++; dmCarregarImgs(); } }); }); // Carregar Imagens dmCarregarImgs = function(){ if(dmTotalCSSok == dmTotalCSS){ if(window.console && dmLog) console.log("PreLoad Images - Desenvolvido por Diego Marques\n09/01/2008 - Agência DMK - http://www.agenciadmk.com.br/\nTotal de imagens: "+dmImgPreLoad.length); dmLoadImage = new Array(); dmTotalCarregado = 0; dmTotalErro = 0; if(dmImgPreLoad.length > 0){ for(i=0;i<dmImgPreLoad.length;i++){ dmLoadImage[i] = new Image(); dmLoadImage[i].onload = function(){ dmTotalCarregado++; if(window.console && dmLog) console.log("Imagem: "+this.src+" - OK!"); dmFinalizaPreload(); } dmLoadImage[i].onerror = function(){ dmTotalErro++; if(window.console && dmLog) console.log("ERRO AO CARREGAR IMAGEM: "+this.src+" !!!"); dmFinalizaPreload(); } dmLoadImage[i].src = dmImgPreLoad[i]; } dmFinalizaPreload = function(){ if(dmImgPreLoad.length == (dmTotalCarregado + dmTotalErro)){ if(window.console && dmLog) console.log("PreLoad Concluído!\nTotal de imagens carregadas: "+dmTotalCarregado+"\nTotal de erros: "+dmTotalErro); } } } } } } dmPreLoadImg(); |
Entry Details
Publicado em 17/01/2008 às 12:01 em Ajax, Frameworks, Javascript, jQuery

Muito interessante cara. Parabens
Nao cheguei a testar, mas gostei do codigo
Seria bom se você tivesse colocado um link com exemplo pronto….. mas tudo bem… deve ser legal.
Saudações!
Aguinelo, eu desenvolvi este script enquanto estava programando a interface deste site na agência em que trabalho:
http://www.agenciadmk.com.br/mbdorper/
Se você tiver o Firebug já visualiza no log as informações do preloading.