Greg-J
By: a guest | Jul 20th, 2008 | Syntax:
JavaScript | Size: 1.82 KB | Hits: 988 | Expires: Never
jQuery.preloadCssImages = function(settings){
var settings = jQuery.extend({
statusTextEl: null,
statusBarEl: null
}, settings);
var allImgs = [];
var k = 0;
var sheets = document.styleSheets;
for(var i = 0; i<sheets.length; i++){
var cssPile = '';
var csshref = sheets[ i ].href ? sheets[ i ].href : 'window.location.href';
var baseURLarr = csshref.split('/');
baseURLarr.pop();
var baseURL = baseURLarr.join('/');
if(baseURL!==""){
baseURL+='/';
}
if(document.styleSheets[ i ].cssRules){
var thisSheetRules = document.styleSheets[ i ].cssRules;
for(var j = 0; j<thisSheetRules.length; j++){
cssPile+= thisSheetRules[j].cssText;
}
}
else {
cssPile+= document.styleSheets[ i ].cssText;
}
var imgUrls = cssPile.match(/[^\(]+\.(gif|jpg|jpeg|png)/g);
var loaded = 0;
if(imgUrls !== null && imgUrls.length>0 && imgUrls !== ''){
var arr = jQuery.makeArray(imgUrls);
jQuery(arr).each(function(){
allImgs[ k ] = new Image();
allImgs[ k ].src = (this.charAt(0) == '/' || this.match('http://')) ? this : baseURL + this;
$(allImgs[ k ]).load(function(){
loaded++;
if(settings.statusTextEl) {$(settings.statusTextEl).html('<span class="numLoaded">'+loaded+'</span> of <span class="numTotal">'+allImgs.length+'</span> loaded (<span class="percentLoaded">'+(loaded/allImgs.length*100).toFixed(0)+'%</span>) <span class="currentImg">Now Loading: <span>'+allImgs[loaded-1].src.split('/')[allImgs[loaded-1].src.split('/').length-1]+'</span></span>');
}
if(settings.statusBarEl) {
var barWidth = $(settings.statusBarEl).width();
$(settings.statusBarEl).css('background-position', -(barWidth-(barWidth*loaded/allImgs.length).toFixed(0))+'px 50%');
}
});
k++;
});
}
}
return allImgs;
};