2011-12-05 17 views
0

ubuntu 11.10のFirefox 8.0では、img.completeはfalseですが、onload関数drawが呼び出されます。私はsetTimeoutハックでやや解決しましたが、それほど美味しくありません。
img.srcを設定する前にimg.onloadを設定しようとしました。私はいつもこのようにimg.completeをtrueにしますが、img.widthは0で、img.srcも空ですので動作しません。
これを正しく実装する方法はありますか?javascript onload image!complete

 var draw=function(img,ctx,x,y) 
     { if(!img.complete) 
      { setTimeout(function(){draw(img,ctx,x,y);},50); 
      } 
      else 
      { 
       ctx.drawImage(img,x,y); 
      } 
     } 
     for(i=0;i<9;i++) 
     { img=new Image(); 
      img.src="/media/"+url[i]; 
      img.onload=(draw)(img,ctx,tile.x*offset[i].x,tile.y*offset[i].y); 
     } 

答えて

3

completeプロパティはFirefoxではバグです。 trueになると、は常にtrue(画像を変更しても)です。

私は新しいImageオブジェクトをテストしてその周りにいました。

-1

新しい画像はすべて完成していません。

代わりにimg.widthを0より大きくしてみてください。