joh6nn
01-09-2005, 06:56 AM
someone had been asking about getting images to load in a specific order a while back, and while i was thinking about that, i came up with the following preloader script. the thing that separates this one from most of the other ones you'll find is that it lets you know if any of the images didn't load. if i weren't too lazy (i'm actually posting 'cause i'm hoping someone will do this for me), i'd connect the XmlHTTP request object to the array of failed image urls, and get the actual error headers, too. then, if i were really ambitious, i'd manually feed that info into an error reporting script, like this one (http://webmonkey.wired.com/webmonkey/reference/javascript_code_library/handle_errors/?tw=reference&category=development) that Webmonkey (http://www.webmonkey.com) demonstrates.
anyway, here it is. it takes an array of url strings to load, and returns an array of the ones that failed, for whatever reason.
function preLoad(args){
if (document.images){
var img = new Image();
var failed = [];
img.onerror = function(){
failed[failed.length] = this.src;
if(args.length > 0){ this.src = args.shift(); }
}
img.onload = function(){
if(args.length > 0){ this.src = args.shift(); }
}
img.src = args.shift();
}
else { var failed = args; }
return failed;
}
anyway, here it is. it takes an array of url strings to load, and returns an array of the ones that failed, for whatever reason.
function preLoad(args){
if (document.images){
var img = new Image();
var failed = [];
img.onerror = function(){
failed[failed.length] = this.src;
if(args.length > 0){ this.src = args.shift(); }
}
img.onload = function(){
if(args.length > 0){ this.src = args.shift(); }
}
img.src = args.shift();
}
else { var failed = args; }
return failed;
}