在ubuntu11.10上的firefox8.0中,尽管img.complete
为false,但onload函数draw
仍会被调用。我设法用setTimeout
hack解决了这个问题,但它并不美观。
在设置img.src
之前,我尝试了设置img.onload
。虽然我总是这样得到img.complete
为真,但img.width
是零,img.src
也是空的,所以它不起作用。
有没有办法正确地实现这一点?
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);
}
发布于 2011-12-05 03:35:18
complete
属性在火狐中有错误。一旦它是true
,它总是true
(即使你改变了图像)。
我通过测试一个新的Image
对象解决了这个问题。
发布于 2013-01-30 12:44:37
每个.complete的新图像也不起作用。
请尝试检查img.width是否大于零。
https://stackoverflow.com/questions/8380698
复制相似问题