Pré-carregar imagem

O pré-carregamento de imagens em Javascript ajuda com troca de imagens, por exemplo nos eventos de clique ou passagem do mouse (onmousedown e onmouseover), pois o visitante não precisará esperar ser carregada a imagem apenas quando o navegador disparar o evento.

O pré-carregamento é feito com o seguinte código (lembre-se de colocar isso dentro de <script> e/ou <head>:

var imagem = new Image();
imagem.src = "caminho/arquivo.gif";

O código inicia um novo objeto do tipo Image e especifica o atributo scr com o caminho da imagem. Para os mais espertinhos da platéia, sim, isso é o mesmo que:

Para cada imagem a ser pré-carregada, você deve iniciar um objeto e especificar o src, duas, três, quatro vezes e assim por diante.

Para facilitar, vale a pena colocar numa matriz todas as imagens que você deseja carregar e apenas dar um laço nela.

// Lista do caminho e nome dos arquivos de imagem. Pode ter quantas você quiser :)
imagem_lista = Array('arquivo.gif', 'arquivo2.gif', 'arquivo3.gif');
imagem_qtd = imagem_lista.length;
for (i = 0; i &lt; imagem_qtd; i++) {
    var preload = new Image();
    preload.src = imagem_lista[i];
}

E pronto 🙂 Todas as imagens da matriz imagem_lista serão carregadas pelo navegador quando o script acima rodar.


Posted

in

by

Tags:

Comments

20 responses to “Pré-carregar imagem”

  1. Borg Avatar
    Borg

    Muito bom script, valeu!

  2. Tiago Celestino Avatar

    Estava precisando disso mesmo. Valeu.

  3. André Avatar
    André

    E como faço para utilizar? Não entendi muito bem. Sou noob em javascript.

  4. inerte Avatar
    inerte

    Basta colocar o código dentro das tags que abrem e fecham Javascript no header, tipo:

    <html>
    <head>
    <title>Exemplo</title>
    <script type=”text/javascript”>
    // O código
    </script>
    </head>
    <body>
    </body>
    </html>

    É só a página ser aberta, executando o código, que as imagens estarão pré-carregadas.

  5. João Carlos Rosseto Avatar

    Deixa-me entender melhor:

    Se as imagens não precisassem ser exibidas de imediato, eu poderia estar preenchendo um formulário enquanto as imagens estão sendo baixadas sem que isto atrapalhasse o preenchimento do formulário?

  6. inerte Avatar
    inerte

    Apesar disso ser possível, não é o objetivo do código dessa página. Aqui estou carregando as imagens *antes* do restante da página. Também dá para carregar depois, mas o truque seria outro.

  7. Lucas Avatar
    Lucas

    Olá, Muito bom seu script.
    Gostaria de saber se é possivel adapta-lo para pré-carregar vídeos. quais seriam as alterações necessárias?

  8. inerte Avatar
    inerte

    Oi Lucas, não sei direito se há uma maneira correta de pré-carregar vídeos. O conceito de pré-carregamento envolve requisitar o conteúdo antes dele ser utilizado, e assim como as imagens aqui, imagino que bastaria chamar o vídeo, mas lembre-se que se ele é um flv mostrado em um swf, é o swf que você deve pré-carregar.

  9. Lucas Avatar
    Lucas

    Olá Inerte! Obrigado por responder.
    eu preciso é pré-carregar vídeos no formato dvix, no html.
    mas seriam uns 10 vídeos. como uma lista de reprodução. e o que eu precisava é quê:
    quanto o primeiro videos está sendo assistido ja fosse pre-carregando o segundo, tercveiro. etc.
    se souber uma forma eu agradeço.

    Obrigado.
    Abraço.

  10. Gustavo Avatar
    Gustavo

    tenho uma dúvida: e se o navegador do visitante do site não permitir scripts. as imagens não serão carregadas ou serão carregadas do modo padrão?

  11. inerte Avatar
    inerte

    Oi Gustavo,

    Se você está usando <img /> com src normal, sim, o navegador irá mostrar a imagem mesmo que não tenha conseguido pré carregá-la via script.

  12. Gustavo Avatar
    Gustavo

    OK, entendi. Obrigado

  13. Anderson Avatar

    Tenho algumas imagens de background do css, esse script serve também?

  14. Anderson Avatar

    Ótimo, bem o que eu precisava 😉
    Vlws!

  15. inerte Avatar
    inerte

    Oi Anderson! Sim, o script funciona. O navegador vai ter já “pego” a imagem, não precisando recarregá-la portanto. Certifique-se que as imagens estão sendo servidas com parâmetros corretos de cache (Etag e/ou Last-Modified) e elas serão abaixadas com antecedência da segunda requisição (para o background do css).

  16. lidiapu7 Avatar
    lidiapu7

    como faço para colocar uma mensagem de que as imagens estao carregando?

  17. André Kiffer Avatar
    André Kiffer

    Cara esse script me ajudou bastante ;). Tenho um site de anúncios onde cada anúncio tem tres imagens: a miniatura a media e a que da um zoom ao passar o mouse, meu grande problema era a imagem do zoom que só era carregada ao passar o mouse isso poderia entediar o pessoal que acessava o site, agora com seu script elas são carregadas em segundo plano dando muito mais rapidez pro anuncio valeu mesmo!

  18. Vidaloka_v8 Avatar
    Vidaloka_v8

    ola eu queria saber se ao carregar as imagens tem como mostrar uma barra de progreço? tipo de 0 a 100% igual em flash e tipo se eu tenho um slide feito em gif tipo uma porrada de gif so que esses gifs sao mostrados na tela somente quando o usuario faz uma requisiçao ao bd é uma especie de jogo ai eu queria que carregasse todas as imagens e animaçoes para depois começar o game sera que seu codigo consegue?

    e parabens pelo seu tutorial e muito bom ja me deu uma grande luz so falta eu alcaça-la.

  19. Dege Avatar
    Dege

    Maneiro cara, muito bom

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.