mój problem:Komponent zwrócony kod błędu: 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]
Kod które produkują to zachowanie (tmpImg się ładuje dynamicznie, więc jeśli nie jest jeszcze załadowany, to pominąć).
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);
}
Problem zdarza się kilka razy, kiedy tmpImg jest po prostu załadowane (a przynajmniej według dziennika Firebug jest), a następnie znikają.
Fragment kodu jest wywoływany kilka razy z rzędu, więc nie widzę, czy obraz jest rzeczywiście wyświetlany po zgłoszeniu błędu. .
Wartość w rect * są zmiennoprzecinkowych, coś jak {x: -1500, Y: -2500, H: 1000, w: 1000}
Czy masz jakiś pomysł na temat pochodzenia tego błędu?
Edycja 1
Ten kod produkować błąd (trzeba mieć obraz o nazwie „test.png” w tym samym katalogu
<!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>
Wydaje związane z faktem, że pusty obraz ma przyzwoitość src "". Czy zawsze prawda?
edit 2
W rzeczywistości, do zgłaszania błędów, to wystarczyłoby JavaScript (jeśli zrozumiałem):
document.getElementById("canvas").getContext("2d").drawImage(new Image(),0,0);
Dodałem kod wywołujący błąd, znalazłem od miejsca, w którym pojawił się problem w moim kodzie (testowanie wartości null zamiast ""), jeśli nadal mówisz, że to błąd, chciałbym Ci pomóc, aby poprawnie to zasygnalizować (I obawiam się, że odniesienie do HTML jest dla mnie trochę zbyt niejasne). –
Wygląda na to, że jest to znany, stary błąd: https://bugzilla.mozilla.org/show_bug.cgi?id=405761 Dodałem twój krótszy przypadek testowy. – zwol