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 imagensimages
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 propriedadesrc
no objeto do arrayimages
. Também anexamos uma funçãoprogress()
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 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