reload images test
by FirstBug
JavaScript
var preloadImages = function(preload, callBack) {
var promises = [];
var response = {
'loaded': [],
'errored': [],
'aborted': []
};
for (var i = 0; i < preload.length; i++) {
(function(url, promise) {
var img = new Image();
img.onload = function() {
response.loaded.push(this.src);
promise.resolve();
};
// Use the following callback methods to debug
// in case of an unexpected behavior.
img.onerror = function() {
response.errored.push(this.src);
promise.resolve();
};
img.onabort = function() {
response.aborted.push(this.src);
promise.resolve();
};
//
img.src = url;
})(preload[i], promises[i] = $.Deferred());
}
$.when.apply($, promises).done(function() {
callBack.call(response);
});
};
var arr_valid = [
'http://www.google.com/logos/doodles/2014/doodle-4-google-2013-new-zealand-winner-5595355081080832-hp.jpg', 'http://www.google.com/logos/doodles/2014/australia-day-2014-doodle-4-google-2013-winner-6247445470117888-hp.jpg'
];
var arr_invalid = [
'http://www.google.com/logos/d.jpg', 'http://www.google.com/logos/e.jpg'
];
preloadImages(arr_valid, function() {
console.log(this);// response object
console.log('All loaded');
});
// More Precise
preloadImages(arr_invalid, function() {
var response = this;
var hasError = response.errored.length + response.aborted.length;
if (hasError > 0) {
console.log('failed ' + hasError);
} else {
console.log('all loaded');
}
});