【发布时间】:2013-02-03 01:20:10
【问题描述】:
我在为 CSS 背景图像制作工作预加载器时遇到了麻烦。 情况如下:我有几个隐藏元素,每个元素都有一个css背景图片。
当用户单击“开始”按钮时,我使用 jquery 显示元素(一个接一个:显示一个,另一个隐藏)。但是,“开始”按钮应仅在加载所有图像后才可用。
我正在使用这个预加载器:
function preloadimages(arr) {
var newimages=[], loadedimages=0
var postaction=function(){}
var arr=(typeof arr!="object")? [arr] : arr
function imageloadpost() {
loadedimages++
if (loadedimages == arr.length) {
postaction(newimages) //call postaction and pass in newimages array as parameter
}
}
for (var i=0; i<arr.length; i++) {
newimages[i] = new Image()
newimages[i].src = arr[i]
newimages[i].onload = function() {
imageloadpost()
}
newimages[i].onerror = function() {
imageloadpost()
}
}
return { //return blank object with done() method
done:function(f) {
postaction = f || postaction //remember user defined callback functions to be called when images load
}
}
}
preloadimages('img01','img02','img03')
.done(function(images) {
alert(images.length + " images loaded");
});
不过,这只会加载 1 张图片。
我也尝试了一些其他代码,但没有结果。图像预加载器真的应该在 CSS 背景图像上工作吗?还是它们仅用于标签?
【问题讨论】:
标签: jquery css background preloader image-preloader