/** * -------------------------------------------------------------------- * jQuery-Plugin "preloadCssImages" * by Scott Jehl, scott@filamentgroup.com * http://www.filamentgroup.com * reference article: http://www.filamentgroup.com/lab/update_automatically_preload_images_from_css_with_jquery/ * demo page: http://www.filamentgroup.com/examples/preloadImages/index_v4.php * * Copyright (c) 2008 Filament Group, Inc * Dual licensed under the MIT (filamentgroup.com/examples/mit-license.txt) and GPL (filamentgroup.com/examples/gpl-license.txt) licenses. * * Version: 4.0, 07.24.2008 * Changelog: * 02.20.2008 initial Version 1.0 * 06.04.2008 Version 2.0 : removed need for any passed arguments. Images load from any and all directories. * 06.21.2008 Version 3.0 : Added options for loading status. Fixed IE abs image path bug (thanks Sam Pohlenz). * 07.24.2008 Version 4.0 : Added support for @imported CSS (credit: http://marcarea.com/). Fixed support in Opera as well. * -------------------------------------------------------------------- */ jQuery.preloadCssImages = function(settings){ var settings = jQuery.extend({ statusTextEl: null, statusBarEl: null }, settings); var allImgs = [];//new array for all the image urls var k = 0; //iterator for adding images var sheets = document.styleSheets;//array of stylesheets for(var i = 0; i 0 ) { for (var m=0; m0 && imgUrls != ''){//loop array\ var arr = jQuery.makeArray(imgUrls);//create array from regex obj jQuery(arr).each(function(){ allImgs[k] = new Image(); //new img obj allImgs[k].src = (this.charAt(0) == '/' || this.indexOf('http://')>-1) ? this : baseURL + this; //set src either absolute or rel to css dir if(allImgs[k].src.lastIndexOf('http://')>0){allImgs[k].src = allImgs[k].src.split('%22')[1];} //fixed opera's source doubling $(allImgs[k]).load(function(){ loaded++; //send updates to status elements if applicable if(settings.statusTextEl) { $(settings.statusTextEl).html(''+loaded+' of '+allImgs.length+' loaded ('+(loaded/allImgs.length*100).toFixed(0)+'%) Now Loading: '+allImgs[loaded-1].src.split('/')[allImgs[loaded-1].src.split('/').length-1]+''); } if(settings.statusBarEl) { var barWidth = $(settings.statusBarEl).width(); $(settings.statusBarEl).css('background-position', -(barWidth-(barWidth*loaded/allImgs.length).toFixed(0))+'px 50%'); } }); k++; }); } }//loop return allImgs; }