Pastie now auto-senses if line-wrap is a bad or good idea. Feedback?
## mark a section (Learn more)
Prototype.preloadCssImages = function() { var allImgs = []; $A(document.styleSheets).each(function(sheet) { var cssPile = '', csshref = sheet.href || window.location.href, baseURLarr = csshref.split('/'); baseURLarr.pop();//remove file path from baseURL array var baseURL = baseURLarr.join('/'); //create base url for the images in this sheet (css file's dir) if (baseURL) baseURL += '/'; //tack on a / if needed if (sheet.cssRules) { $A(sheet.cssRules).each(function(rule) { cssPile += rule.cssText; }); } else cssPile += sheet.cssText; //parse cssPile for image urls and load them into the DOM cssPile.gsub(/[^\(]+\.(?:gif|jpg|jpeg|png)/, function(match) { //reg ex to get a string of between a "(" and a ".filename" var url = match[0]; allImgs.push(new Image()); allImgs.last().src = (url[0] == '/' || url.match('http://')) ? url : baseURL + url; //set src either absolute or rel to css dir }); }); return allImgs; };
This paste will be private.
From the Design Piracy series on my blog: