MinatureCookie
July 7th, 2007, 17:51
Hey guys, so I've decided I want a nice little image preloader on my site, but I have no idea how to make one.
I got a script off that 'Dynamic Drive'? Site... Or something like that, but I'd much rather actually write my own script and understand it than use someone elses, besides theirs doesn't work in IE. The codec is:-
// Progressbar - Version 2.0
// Author: Brian Gosselin of http://scriptasylum.com
// Featured on Dynamic Drive (http://www.dynamicdrive.com)
// PUT THE NAMES OF ALL YOUR IMAGES THAT NEED TO BE "CACHED" IN THE "imagenames" ARRAY.
// DONT FORGET THE COMMA BETWEEN EACH ENTRY, OR THE TICK MARKS AROUND EACH NAME.
// WHEN ALL THE IMAGES ARE DONE LOADING, THE "imagesdone" VARIABLE IS SET TO "TRUE"
var imagenames=new Array( 'Enter.png' , 'Enter-h.png' , 'optimised-h.png' , 'home-h.png' , 'bio-h.png' , 'resume-h.png' , 'contact-h.png' , 'FF-h.png' , 'TB-h.png' , 'W3-h.png' , 'CT-h.png' , 'Buddy-h.png' , 'IWDN-h.png' , 'Work-h.png' , 'Bg-top.png' , 'Index.png' , 'optimised.png' , 'home.png' , 'bio.png' , 'resume.png' , 'contact.png' , 'FF.png' , 'TB.png' , 'W3.png' , 'CT.png' , 'Buddy.png' , 'IWDN.png' , 'Work.png' , 'Word-h.png' , 'Word.png' , 'Text-h.png' , 'Text.png' , 'Resume-d.png' , 'Bg.png' , 'Bg-s.png' , 'Bg-top.png' );
var yposition=250; //POSITION OF LOAD BAR FROM TOP OF WINDOW, IN PIXELS
var loadedcolor='#1c5190' ; // PROGRESS BAR COLOR
var loadedimage='bg-l.png';
var unloadedcolor='#e6eef8'; // BGCOLOR OF UNLOADED AREA
var barheight=15; // HEIGHT OF PROGRESS BAR IN PIXELS (MIN 25)
var barwidth=350; // WIDTH OF THE BAR IN PIXELS
var bordercolor='#97b3d6'; // COLOR OF THE BORDER
//DO NOT EDIT BEYOND THIS POINT
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%" style="background-image: url('+loadedimage+');" 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="1" face="sans-serif">Preloading Images...</font></center></td></tr></table><a href="Indexf.html"><img border="0" src="Enter.png" style="position: absolute; left: 50%; top: 0; margin-left: -400px; margin-top: -145px; visibility: hidden;" id="enter" name="enter" onmouseover="this.src=\'enter-h.png\';" onmouseout="this.src=\'enter.png\';" /></a>';
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+'" style="background-image: url('+loadedimage+');" bgcolor="'+loadedcolor+'"><center><font color="'+unloadedcolor+'" size="1" face="sans-serif">Preloading Images...</font></center></td></tr></table><a href="Indexf.html"><img border="0" src="Enter.png" style="position: absolute; left: 50%; top: 0; margin-left: -400px; margin-top: -145px; visibility: hidden;" id="enter" name="enter" onmouseover="this.src=\'enter-h.png\';" onmouseout="this.src=\'enter.png\';" /></a>';
txt+=(NS4)? '</layer></ilayer>' : '</div>';
txt+='</td></tr></table>';
txt+=(NS4)?'</layer>' : '</div>';
document.write(txt);
function loadimages(){
if(NS4){
perouter=document.perouter;
enter=document.enter;
perdone=document.perouter.document.layers[0].document.perdone;
}
if(NS6){
perouter=document.getElementById('perouter');
perdone=document.getElementById('perdone');
enter=document.getElementById('enter');
}
if(IE4){
perouter=document.all.perouter;
perdone=document.all.perdone;
enter=document.all.enter;
}
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)? enter.visibility="visible" : enter.style.visibility="visible";
(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;
( Put onto the page http://stephen-cook.cavetroubles.org/Home.html )
Hope I'm not being too wanty, but can someone take me through this so I can write my own that works in all (main) browsers?
Cheers if someone can :)
P.S
(I have edited the script so that an image appears after the preloader bit's gone away)
Sorry if any of this is crappy code in any way, but basically I want someone to tell me how to do what is on http://stephen-cook.cavetroubles.org/Home.html valid in every browser. Again, hope I don't sound too wanty :blush:
I got a script off that 'Dynamic Drive'? Site... Or something like that, but I'd much rather actually write my own script and understand it than use someone elses, besides theirs doesn't work in IE. The codec is:-
// Progressbar - Version 2.0
// Author: Brian Gosselin of http://scriptasylum.com
// Featured on Dynamic Drive (http://www.dynamicdrive.com)
// PUT THE NAMES OF ALL YOUR IMAGES THAT NEED TO BE "CACHED" IN THE "imagenames" ARRAY.
// DONT FORGET THE COMMA BETWEEN EACH ENTRY, OR THE TICK MARKS AROUND EACH NAME.
// WHEN ALL THE IMAGES ARE DONE LOADING, THE "imagesdone" VARIABLE IS SET TO "TRUE"
var imagenames=new Array( 'Enter.png' , 'Enter-h.png' , 'optimised-h.png' , 'home-h.png' , 'bio-h.png' , 'resume-h.png' , 'contact-h.png' , 'FF-h.png' , 'TB-h.png' , 'W3-h.png' , 'CT-h.png' , 'Buddy-h.png' , 'IWDN-h.png' , 'Work-h.png' , 'Bg-top.png' , 'Index.png' , 'optimised.png' , 'home.png' , 'bio.png' , 'resume.png' , 'contact.png' , 'FF.png' , 'TB.png' , 'W3.png' , 'CT.png' , 'Buddy.png' , 'IWDN.png' , 'Work.png' , 'Word-h.png' , 'Word.png' , 'Text-h.png' , 'Text.png' , 'Resume-d.png' , 'Bg.png' , 'Bg-s.png' , 'Bg-top.png' );
var yposition=250; //POSITION OF LOAD BAR FROM TOP OF WINDOW, IN PIXELS
var loadedcolor='#1c5190' ; // PROGRESS BAR COLOR
var loadedimage='bg-l.png';
var unloadedcolor='#e6eef8'; // BGCOLOR OF UNLOADED AREA
var barheight=15; // HEIGHT OF PROGRESS BAR IN PIXELS (MIN 25)
var barwidth=350; // WIDTH OF THE BAR IN PIXELS
var bordercolor='#97b3d6'; // COLOR OF THE BORDER
//DO NOT EDIT BEYOND THIS POINT
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%" style="background-image: url('+loadedimage+');" 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="1" face="sans-serif">Preloading Images...</font></center></td></tr></table><a href="Indexf.html"><img border="0" src="Enter.png" style="position: absolute; left: 50%; top: 0; margin-left: -400px; margin-top: -145px; visibility: hidden;" id="enter" name="enter" onmouseover="this.src=\'enter-h.png\';" onmouseout="this.src=\'enter.png\';" /></a>';
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+'" style="background-image: url('+loadedimage+');" bgcolor="'+loadedcolor+'"><center><font color="'+unloadedcolor+'" size="1" face="sans-serif">Preloading Images...</font></center></td></tr></table><a href="Indexf.html"><img border="0" src="Enter.png" style="position: absolute; left: 50%; top: 0; margin-left: -400px; margin-top: -145px; visibility: hidden;" id="enter" name="enter" onmouseover="this.src=\'enter-h.png\';" onmouseout="this.src=\'enter.png\';" /></a>';
txt+=(NS4)? '</layer></ilayer>' : '</div>';
txt+='</td></tr></table>';
txt+=(NS4)?'</layer>' : '</div>';
document.write(txt);
function loadimages(){
if(NS4){
perouter=document.perouter;
enter=document.enter;
perdone=document.perouter.document.layers[0].document.perdone;
}
if(NS6){
perouter=document.getElementById('perouter');
perdone=document.getElementById('perdone');
enter=document.getElementById('enter');
}
if(IE4){
perouter=document.all.perouter;
perdone=document.all.perdone;
enter=document.all.enter;
}
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)? enter.visibility="visible" : enter.style.visibility="visible";
(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;
( Put onto the page http://stephen-cook.cavetroubles.org/Home.html )
Hope I'm not being too wanty, but can someone take me through this so I can write my own that works in all (main) browsers?
Cheers if someone can :)
P.S
(I have edited the script so that an image appears after the preloader bit's gone away)
Sorry if any of this is crappy code in any way, but basically I want someone to tell me how to do what is on http://stephen-cook.cavetroubles.org/Home.html valid in every browser. Again, hope I don't sound too wanty :blush: