私のプリローダーは、PCとMACの両方のすべての主要なブラウザーで完全に機能しますが、iPadでは不安定に見えます。
うまくいくこともあれば、うまくいかないこともありますが、キャッシュをクリアすると、最初の試行でほとんどすべて失敗します。私は本当にここで立ち往生しているので、助けていただければ幸いです。
これは私のコードです:
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
}
}
}
$(document).ready(function(){
preloadimages(['img/bg_joejuice.jpg',
'img/bg_facebook.jpg',
'img/bg_webshop.jpg',
'img/bg_spotify.jpg',
'img/btn_grey_down.png',
'img/btn_pink_down.png',
'img/coffee_active.png',
'img/juice_normal.png',
'img/sandwich_active.png',
'img/remove_down.png',
'img/inc_down.png',
'img/dec_down.png',
'img/checkbox_unchecked.png',
'img/hide_spotify.png',
'img/logo_facebook_active.png',
'img/logo_joejuice.png',
'img/logo_spotify_active.png',
'img/logo_webshop_active.png',
'img/checkbox_unchecked.png',]
).done(function(){
console.log("loaded");
});
});
編集:指定しなくてすみません。
コンソール(関連)でエラーが発生せず、「ロードされた」コメントをログに記録するポイントに到達しません。
新しい編集私は19枚の写真を手に入れました。forloopを19回実行します。エラーが発生すると、通常は18の「オンロード」が発生し(ただし、16と低くなっています)、「オンエラー」は発生しません。
トリガーされないのはonerror関数のようです(ただし、MACとPCの両方のすべての主要なブラウザーでトリガーされます。リストに含まれているIDの画像の1つを削除すると、iPadでもトリガーされます)。 。これは正しいですか?-もしそうなら、どうすればこれを機能させることができますか?