0

私はこれを機能させようとしてきましたが、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 ループでラップし、毎回新しいオブジェクトを作成することでした。しかし、これはより理にかなっているように見えました。

ありがとう、サイ

4

1 に答える 1

2

これはあなたの質問に答えるはずです: http : //www.thefutureoftheweb.com/blog/image-onload-isnt-being-called最初にonLoadを設定する必要があります。うまくいけば、それはうまくいくでしょう:

 topTenImg.onLoad = function(){
  if(!checkImage(topTenImg)){
   if(errorCnt < imageOrder.length){
    var io = imageOrder[++errorCnt];
    topTenImg.src = domainResources+io;
   }
  }
 }
 topTenImg.src = domainResources+imageOrder[errorCnt];
于 2010-01-18T14:37:44.400 に答える