Préchargement des images avec une barre de progression pour faire patienter ( IE4+ et NS4 )
Pourquoi
ce script ?
Vous arrivez
sur un site web sur lequel se trouvent trop souvent de nombreuses images et
vous perdez patience car il est trop long à apparaître, et vous
allez donc voir ailleur tout simplement
Évitez ce désagrément à vos visiteurs, qui par déduction resteront plus longtemps......
Attention,
afin d'optimiser la démonstration, j'ai volontairement conçu une
page très longue à charger; patientez donc si vous souhaitez comprendre
le principe de fonctionnement, cliquez
ici !!
|
- Il faut
configurer différents paramètres au début du
script, lisez attentivement les commentaires ! |
Télécharger ici le script ( 3 Ko )
1 - Copiez et collez avant entre les balises <head> et </head> où bon vous semble :
<script>
// L'adresse des différentes images
// exemple : image1.gif si l'image de trouve dans le même dossier que
votre page,
// ou encore photographies/image1.gif, si cette dernière se trouve dans
le dossier photographies
//Faite attention au respect de l'extention de l'image, *.gif, *.jpg, *.bmp,
Etc, etc.......
var imagenames=new Array( 'image1.gif' , 'image2.gif' , 'image3.gif' , 'image4.gif'
, 'images1.bmp');
// Position de la barre par rapport au bord supérieur
var yposition=250;
// Couleur ( le temps écoulé ) de la progression du chargement
(en Anglais !)
var loadedcolor='blue' ;
// Couleur de la partie pas encore chargée ( le temps restant )
var unloadedcolor='white';
// Hauteur de la barre de chargement (minimum 25)
var barheight=15;
// Largeur de la barre de chargement
var barwidth=350;
// Couleur de la bordure de la barre (en Anglais !)
var bordercolor='black';
//Ne touchez aucune valeur ci-dessous
var NS4 = (navigator.appName.indexOf("Netscape")>=0 &&
parseFloat(navigator.appVersion) >= 4 && parseFloat(navigator.appVersion)
< 5)? true : false;
var IE4 = (document.all)? true : false;
var NS6 = (parseFloat(navigator.appVersion) >= 5 && navigator.appName.indexOf("Netscape")>=0
)? true: false;
var imagesdone=false;
var blocksize=barwidth/(imagenames.length);
barheight=Math.max(barheight,25);
var loaded=0, perouter, perdone, images=new Array();
var txt=(NS4)?'<layer name="perouter" bgcolor="'+bordercolor+'"
visibility="hide">' : '<div id="perouter" style="position:absolute;
visibility:hidden; background-color:'+bordercolor+'">';
txt+='<table cellpadding="0" cellspacing="1" border="0"><tr><td
width="'+barwidth+'" height="'+barheight+'" valign="center">';
if(NS4)txt+='<ilayer width="100%" height="100%"><layer
width="100%" height="100%" bgcolor="'+unloadedcolor+'"
top="0" left="0">';
txt+='<table cellpadding="0" cellspacing="0" border="0"><tr><td
valign="center" width="'+barwidth+'" height="'+barheight+'"
bgcolor="'+unloadedcolor+'"><center><font color="'+loadedcolor+'"
size="2" face="sans-serif"><B>Chargement en cours...</B></font></center></td></tr></table>';
if(NS4) txt+='</layer>';
txt+=(NS4)? '<layer name="perdone" width="100%" height="'+barheight+'"
bgcolor="'+loadedcolor+'" top="0" left="0">'
: '<div id="perdone" style="position:absolute; top:1px; left:1px;
width:'+barwidth+'px; height:'+barheight+'px; background-color:'+loadedcolor+';
z-index:100">';
txt+='<table cellpadding="0" cellspacing="0" border="0"><tr><td
valign="center" width="'+barwidth+'" height="'+barheight+'"
bgcolor="'+loadedcolor+'"><center><font color="'+unloadedcolor+'"
size="2" face="sans-serif"><B>Chargement en cours...</B></font></center></td></tr></table>';
txt+=(NS4)? '</layer></ilayer>' : '</div>';
txt+='</td></tr></table>';
txt+=(NS4)?'</layer>' : '</div>';
document.write(txt);
function loadimages(){
if(NS4){
perouter=document.perouter;
perdone=document.perouter.document.layers[0].document.perdone;
}
if(NS6){
perouter=document.getElementById('perouter');
perdone=document.getElementById('perdone');
}
if(IE4){
perouter=document.all.perouter;
perdone=document.all.perdone;
}
cliplayer(perdone,0,0,barheight,0);
window.onresize=setouterpos;
setouterpos();
for(n=0;n<imagenames.length;n++){
images[n]=new Image();
images[n].src=imagenames[n];
setTimeout('checkload('+n+')' ,n*100);
}}
function setouterpos(){
var ww=(IE4)? document.body.clientWidth : window.innerWidth;
var x=(ww-barwidth)/2;
if(NS4){
perouter.moveTo(x,yposition);
perouter.visibility="show";
}
if(IE4||NS6){
perouter.style.left=x+'px';
perouter.style.top=yposition+'px';
perouter.style.visibility="visible";
}}
function dispbars(){
loaded++;
cliplayer(perdone, 0, blocksize*loaded, barheight, 0);
if(loaded>=imagenames.length)setTimeout('hideperouter()', 800);
}
function checkload(index){
(images[index].complete)? dispbars() : setTimeout('checkload('+index+')', 100);
}
function hideperouter(){
(NS4)? perouter.visibility="hide" : perouter.style.visibility="hidden";
imagesdone=true;
}
function cliplayer(layer, ct, cr, cb, cl){
if(NS4){
layer.clip.left=cl;
layer.clip.top=ct;
layer.clip.right=cr;
layer.clip.bottom=cb;
}
if(IE4||NS6)layer.style.clip='rect('+ct+' '+cr+' '+cb+' '+cl+')';
}
window.onload=loadimages;
</script>
Le principe de fonctionnement :
© Copyright GendNet 2000 Tout droit de reproduction strictement réservé aux membres de l'association ®