我知道这是一个热门话题,而且我知道以前有过相同标题的问题,但是我尝试了所有方法,但有些东西无法正常工作。出于某种原因,我的 Firefox 不会预加载图像。图像会在 IE7/8 和 Chrome 中预加载(应该如此)。但不是在 Firefox 中。
编辑:
我创建了一个新的 Fiddle: http: //jsfiddle.net/Z2W7r/ 如果有人可以修改它并添加正确的 jQuery 或 Javascript 代码来使图像预加载,我将不胜感激。
我什至在使用以下插件:
jQuery.preloadCssImages = function(){
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<sheets .length; i++){//loop through each stylesheet
var cssPile = '';//create large string of all css rules in sheet
var csshref = (sheets[i].href) ? sheets[i].href : 'window.location.href';
var baseURLarr = csshref.split('/');//split href at / to make array
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(document.styleSheets[i].cssRules){//w3
var thisSheetRules = document.styleSheets[i].cssRules; //w3
for(var j = 0; j<thisSheetRules.length; j++){
cssPile+= thisSheetRules[j].cssText;
}
}
else {
cssPile+= document.styleSheets[i].cssText;
}
//parse cssPile for image urls and load them into the DOM
var imgUrls = cssPile.match(/[^\(]+\.(gif|jpg|jpeg|png)/g);//reg ex to get a string of between a "(" and a ".filename"
if(imgUrls != null && imgUrls.length>0 && 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[0] == '/' || this.match('http://')) ? this : baseURL + this; //set src either absolute or rel to css dir
k++;
});
}
}//loop
return allImgs;
}
并这样称呼它:
$(document).ready(function() {
$.preloadCssImages();
});
所以...有谁知道为什么这个脚本(或任何脚本)不能只在 Firefox 中运行?如果需要,我可以提供该网站的地址。