私はこれを機能させようとしてきましたが、100% 成功するわけではなく、基本的にイメージをロードしようとしました。ソースが存在しない場合は、デフォルトのイメージに到達するまで 2 番目のイメージを試してください。
私はこの質問に基づいて解決策を試してきましたが、私はjQueryを使用していないため、受け入れられた解決策は役に立たないので、2番目の解決策を試してみました。検出?)。必要な 2 番目のイメージをテストするために取得できますが、onload イベントが再びトリガーされるようには見えません。
function topTenImages(){
var topTenDiv = document.getElementById('toptenimg');
var topTenImg = new Image();
var ac = "tryout";
var imageOrder = new Array(
"/images/codespec/banners/"+ac+"_topten.gif",
"/images/codespec/banners/"+ac+"_topten.jpg",
"/images/banners/default_topten.png",
"/images/banners/default_topten.jpg"
);
var errorCnt = 0;
topTenImg.src = domainResources+imageOrder[errorCnt];
topTenImg.onLoad = new function(){
if(!checkImage(topTenImg)){
if(errorCnt < imageOrder.length){
var io = imageOrder[++errorCnt];
topTenImg.src = domainResources+io;
}
}
}
topTenDiv.appendChild(topTenImg);
}
はい、php/perl/et al を使用してこのサーバー側を実行できることはわかっていますが、送信ヘッダーを制限しようとしているため、これが最善の方法のようです。(代替を歓迎します)。私の他の考えは、配列の for ループでラップし、毎回新しいオブジェクトを作成することでした。しかし、これはより理にかなっているように見えました。
ありがとう、サイ