You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Normalmente, as imagens são carregadas quando são criadas. Portanto, quando adicionamos <img> à página, o usuário não vê a imagem imediatamente. O navegador precisa carregá-lo primeiro.
12
+
*
13
+
* Para mostrar uma imagem imediatamente, podemos criá-la “com antecedência”, assim:
14
+
*/
15
+
16
+
//let img = document.createElement('img');
17
+
//img.src = 'my.jpg';
18
+
19
+
/**
20
+
* O navegador começa a carregar a imagem e a lembra no cache. Mais tarde, quando a mesma imagem aparece no documento (não importa como), ela aparece imediatamente.
21
+
*
22
+
* Crie uma função preloadImages(sources, callback) que carregue todas as imagens do array source se, quando estiver pronta, execute callback
23
+
*
24
+
* Por exemplo, isso mostrará alert depois que as imagens forem carregadas:
* Em caso de erro, a função ainda deve assumir a imagem “carregada”.
35
+
*
36
+
* Em outras palavras, o callback é executado quando todas as imagens são carregadas ou com erros.
37
+
*
38
+
* A função é útil, por exemplo, quando planejamos mostrar uma galeria com muitas imagens roláveis e queremos ter certeza de que todas as imagens serão carregadas.
39
+
*
40
+
* No documento fonte você encontra links para imagens de teste, e também o código para verificar se elas estão carregadas ou não. Deve dar saída 300.
41
+
*/
42
+
43
+
functionpreloadImages(sources,callback){
44
+
letcounter=0;
45
+
functioncontador(){
46
+
if(counter===sources.length)
47
+
callback();
48
+
}
49
+
sources.forEach(img=>{
50
+
letimgElem=document.createElement("img");
51
+
imgElem.src=img;
52
+
//so chamar callback quando as três img estiverm carregadas
53
+
imgElem.onload=function(event){
54
+
counter++;
55
+
contador();
56
+
};
57
+
imgElem.onerror=function(event){
58
+
callback();
59
+
};
60
+
});
61
+
62
+
}
63
+
64
+
// ---------- The test ----------
65
+
66
+
letsources=[
67
+
"https://en.js.cx/images-load/1.jpg",
68
+
"https://en.js.cx/images-load/2.jpg",
69
+
"https://en.js.cx/images-load/3.jpg"
70
+
];
71
+
72
+
//adicione caracteres aleatórios para evitar o cache do navegador
73
+
for(leti=0;i<sources.length;i++){
74
+
sources[i]+='?'+Math.random();
75
+
}
76
+
77
+
// para cada imagem,
78
+
// vamos criar outra img com o mesmo src e verificar se temos sua largura imediatamente
79
+
functiontestLoaded(){
80
+
letwidthSum=0;
81
+
for(leti=0;i<sources.length;i++){
82
+
letimg=document.createElement('img');
83
+
img.src=sources[i];
84
+
widthSum+=img.width;
85
+
}
86
+
alert(widthSum);
87
+
}
88
+
89
+
// cada imagem é 100x100, a largura total deve ser 300
0 commit comments