我的問題:組件返回故障代碼:0x80040111(NS_ERROR_NOT_AVAILABLE)
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的日誌),然後消失了好幾次。
代碼片段連續被調用幾次,所以我看不到圖像是否在拋出錯誤時實際顯示。
rect。*中的值是浮點數,例如{x:-1500,y:-2500,h:1000,w:1000}
您是否對此錯誤的來源有所瞭解?
編輯1
此代碼產生錯誤(你需要有一個圖像在同一目錄
<!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>
它似乎與一個事實,即空名爲「test.png」像有 「」 一個src禮。是否總是如此?
編輯2
事實上,對於錯誤報告,這個JavaScript就足夠了(如果我的理解):
document.getElementById("canvas").getContext("2d").drawImage(new Image(),0,0);
添加了一個代碼產生的錯誤,我發現我的代碼出現問題(測試null而不是「」),如果你仍然認爲這是一個錯誤,我會很樂意幫助你正確地發信號(I恐怕HTML引用對我來說有點太模糊了)。 –
看起來這是一個已知的舊bug:https://bugzilla.mozilla.org/show_bug.cgi?id=405761我添加了較短的測試用例。 – zwol