我有麻烦制作工作预加载器为CSS背景图像。 这里是情况:我有几个隐藏的元素,每个都有一个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背景图像上工作吗?或者它们仅用于标签?
看起来不错,但我无法得到它的工作。可能是因为我仍然需要javascript/jquery根据用户的用途来显示元素?无论如何,图像仍然加载后.show()执行 – DavidTonarini
这完全没问题,它应该仍然工作,并与您用来显示元素的任何方法无关。无论如何,图像实际上都被加载到完全独立的元素(伪元素)上。我只是使用jquery show()或jquery addClass()为要显示的元素提供一个类,然后显示它的样式:block; – DMTintner