Imagem de pré-carregamento de JavaScript

Harshit Jindal 20 novembro 2021
Imagem de pré-carregamento de JavaScript

Este tutorial ensina como pré-carregar imagens com JavaScript.

Antes de falar sobre como pré-carregar imagens, vamos primeiro entender por que precisamos pré-carregar imagens. Quando definimos uma imagem usando a tag <image> em HTML, o navegador vê essa imagem, baixa-a e armazena em cache para nós antes que a página carregue. Isso torna a exibição de imagens bastante simples. Mas quando temos algum carregamento dinâmico de imagens acionado por código JavaScript, o navegador não tem informações anteriores sobre isso. Portanto, essas imagens não podem ser baixadas e armazenadas em cache. Essas imagens serão carregadas instantaneamente e podem causar um atraso na exibição, pois o download da imagem é feito primeiro. Faz com que um site tenha uma aparência muito ruim e, portanto, essas imagens devem ser pré-carregadas.

Por exemplo: Se quisermos mostrar um efeito rollover, ou seja, mudar a imagem exibida ao passar o mouse sobre ela, temos que ter certeza de que a segunda imagem está pré-carregada; caso contrário, a imagem demorará muito para carregar, o que faz com que o site pareça feio e não responda.

Pré-carregar imagens com JavaScript

Procedimento

  • Inicie uma variável preloaded para armazenar o número de imagens carregadas durante a fase de pré-carregamento e um array de imagens images para armazenar o endereço de todas as imagens a serem pré-carregadas.
  • Definimos uma função preLoader() para criar objetos de imagem para todas as imagens que devem ser pré-carregadas e armazenar a propriedade src no objeto do array images. Também anexamos uma função progress() para manter a contagem de imagens pré-carregadas com sucesso e realizar qualquer ação após todas as imagens terem sido pré-carregadas.
  • Adicionamos um ouvinte de evento às janelas chamando nosso preLoader() quando o conteúdo DOM é carregado.

Código

var preloaded = 0;
var images = new Array("img1.jpg", "img2.jpg", "img3.jpg");
 
function preLoader(e) {
    for (var i = 0; i < images.length; i++) {
        var tempImage = new Image();
         
        tempImage.addEventListener("load", progress, true);
        tempImage.src = imageArray[i];
    }
}
 
function progress() {
    preloaded++;
     
    if (preloaded == imageArray.length) {
        //ALL Images have been loaded, perform the desired action
    }
}
this.addEventListener("DOMContentLoaded", preLoader, true);
Harshit Jindal avatar Harshit Jindal avatar

Harshit Jindal has done his Bachelors in Computer Science Engineering(2021) from DTU. He has always been a problem solver and now turned that into his profession. Currently working at M365 Cloud Security team(Torus) on Cloud Security Services and Datacenter Buildout Automation.

LinkedIn

Artigo relacionado - JavaScript Image