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 !
 - Où les trouver ?, dans les lignes commençant par des //
 - C'est une opération très facile, si vous suivez les conseils détaillés dans le script lui même

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 :

  1. Le serveur va chercher les images dans le repertoire de stockage de votre espace
  2. Il les met en place avant l'apparition complète dans la page en cours.
  3. Une barre de progression s'affiche pendant l'arrivée des images.
  4. Cette même barre se referme quand l'opération est terminée.

 © Copyright GendNet 2000 Tout droit de reproduction strictement réservé aux membres de l'association ®