Posted by Greg-J on Sun 20 Jul 10:10
report spam | download | new post
- 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;
- };
Submit a correction or amendment below (click here to make a fresh posting)
After submitting an amendment, you'll be able to view the differences between the old and new posts easily.