【发布时间】:2011-10-14 10:22:24
【问题描述】:
我的问题:
uncaught exception: [Exception... "Component returned failure code: 0x80040111 (NS_ERROR_NOT_AVAILABLE) [nsIDOMCanvasRenderingContext2D.drawImage]" nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)" location: "JS frame :: file:///***************.js :: redrawView :: line 308" data: no]
产生此行为的代码(tmpImg 正在动态加载,因此如果尚未加载,则跳过它)。
if(tmpImg!=null && tmpImg.img.complete===true && tmpImg.img.src!=null){
var tmpPos = i_getCoordsImage(tmpImg);
var rect = getRectInCurrentView(tmpPos.x,tmpPos.y,tmpPos.w,tmpPos.h);
console.log(tmpImg);
console.log(rect);
mainDisplayContext.drawImage(tmpImg.img,rect.x,rect.y,rect.w,rect.h);
}
当 tmpImg 刚被加载(至少根据 Firebug 的日志)时,这个问题发生了好几次,然后消失了。
代码sn -p 连续调用了好几次,所以在报错的时候看不到图片是不是真的显示出来了。
rect.* 中的值是浮点数,类似于 {x:-1500, y:-2500,h:1000,w:1000}
你知道这个错误的根源吗?
编辑 1
此代码产生错误(您需要在同一目录中有一个名为“test.png”的图像
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta charset="UTF-8" />
</head>
<body id="body">
<canvas id="canvas" width="600" height="600"></canvas>
<script>
//[CDATA[
var img = new Image();
var mdc = document.getElementById("canvas").getContext("2d");
function displayCallback(){
if(img.complete===true && img.src!=null){
mdc.drawImage(img,0,0,600,600);
}
setTimeout(displayCallback, 50);
}
setTimeout(function(){img.src = "test.png";}, 10000);
setTimeout(displayCallback, 1000);
//]]
</script>
</body>
</html>
这似乎与空图像具有“”的 src 属性有关。总是这样吗?
编辑 2
事实上,对于错误报告,这个 JavaScript 就足够了(如果我理解的话):
document.getElementById("canvas").getContext("2d").drawImage(new Image(),0,0);
【问题讨论】:
标签: javascript image exception canvas