Komponente zurückgegeben Fehler-code: 0 x 80040111 (NS_ERROR_NOT_AVAILABLE)
Mein problem :
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]
Den code, die dieses Verhalten (tmpImg ist dynamisch laden, also wenn es noch nicht geladen ist, es überspringen).
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);
}
Das problem passiert mehrmals, wenn die tmpImg wird gerade geladen (zumindest laut Firebug - log), und dann wieder verschwinden.
Das code-snippet aufgerufen wird, mehrmals nacheinander, so kann ich nicht sehen, wenn das Bild tatsächlich angezeigt, wenn der Fehler ausgelöst wird.
Der Wert rect.* sind floating-point -, so etwas wie {x:-1500, y:-2500,h:1000,B:1000}
Haben Sie keine Ahnung über den Ursprung dieses Fehlers ?
Bearbeiten 1
Dieser code produzieren, den Fehler (du musst ein Bild mit dem Namen "test.png" im gleichen Verzeichnis
<!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>
Scheint es im Zusammenhang mit der Tatsache, dass das leere Bild hat ein src Anstand". Ist es immer so ?
edit 2
In der Tat, für das bug-reporting, das JavaScript ausreichen würde (wenn ich es verstanden) :
document.getElementById("canvas").getContext("2d").drawImage(new Image(),0,0);
InformationsquelleAutor Clement Bellot | 2011-07-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erhalten Sie diese Art von wenig hilfreichen Fehlermeldung von Firefox, wenn ein DOM-API-Aufruf wird eine Javascript-Ausnahme, die nicht abgefangen wird. Der code der Implementierung der Methode drawImage -- http://mxr.mozilla.org/mozilla-central/source/content/canvas/src/nsCanvasRenderingContext2D.cpp#3212 - erscheint wieder den Fehler-code NS_ERROR_NOT_AVAILABLE (was übersetzt in eine JS-exception in C++/JS-Grenze), wenn, aus irgendeinem Grund, all die Daten die es braucht, um zu zeichnen, das Bild ist derzeit nicht verfügbar. Es scheint, dass dies geschehen kann, auch wenn man das Bild betrachtet, um voll beladen sein; ich bin nicht vertraut genug mit diesem Teil des Codes zu wissen, warum das sein könnte.
Ist es meine Meinung als gelegentlicher Firefox-Interna-hacker, die Sie gefunden haben, einen bug im browser: die Spezifikation für die Methode drawImage keine Lizenz die Produktion von einer Ausnahme mit dieser Fehler-code unter keinen Umständen. (Beachten Sie den Kommentar in Zeile 3243, das scheint missverstanden haben, was die Spezifikation sagt.) Bitte konstruieren Sie eine vollständige, in sich geschlossene test-Fall, die das problem veranschaulicht, und dann werde ich glücklich sein zu helfen Sie einen bug-Bericht.
Sieht aus wie es eine bekannte, alte Fehler: bugzilla.mozilla.org/show_bug.cgi?id=405761, fügte ich Ihre kürzere test-Fall.
InformationsquelleAutor zwol