Janus: DrawImage FehlerCode

Hallo!

ich probierte mich an Canvas und wollte mit DrawImage ein Bild in einen solchen laden.
Doch manchmal funktioniert das, manchmal nicht! Wenn es nicht funktioniert hat, spuckt mir die Fehlerkonsole von Firefox(Version 3.6.10) folgendes aus:

<!--  
Fehler: uncaught exception: [Exception... "Component returned failure code: 0x80040111 (NS_ERROR_NOT_AVAILABLE) [nsIDOMCanvasRenderingContext2D.drawImage]"  nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)"  location: "JS frame :: file:///C/.../neuetilesets.html :: felder :: line 24"  data: no]  
-->

Mein Script sieht wie folgt aus:

  
<!--  
var breite; var hohe; var lange; var br;  
  
function felder()  
{  
 var contex; var zahl; var brx; var hoy;  
  
 contex = document.getElementById("can").getContext("2d");  
 contex.drawImage(img, 0, 0);//Die angeblich fehlerhafte zeile  
}  
  
function adresse()  
{  
  
  img = new Image();  
  document.getElementById("te").value = img;  
  img.onload = felder;  
  img.src = "system/1.PNG";  
  
}  
  
//-->

(Habe ein paar Zeilen ausgelassen)

Hoffe jemand kann mir bei diesem Problem helfen!
Grüße!

  1. Firefox' Event-Engine ist in dieser Hinsicht ein wenig seltsam, Image.complete hilft dort auch nicht weiter. Zwei Dinge könnten helfen:

    1. Füge der Funktion felder ein return; am Ende an. Dadurch wird das Event geblockt und kann nicht asynchron ausgeführt werden.

    2. Gebe dem Image eine Größe mit - diese muss nicht notwendigerweise der tatsächlichen Bildgröße entsprechen: img = new Image(100, 100);

    Zudem könnte diese Zeile noch zu Problemen führen:

    document.getElementById("te").value = img;

    Du übergibst hier ein HTMLImageElement an die Value-Eigenschaft eines anderen Elements; möglicherweise führt das dabei ausgeführte .toString() ebenfalls zu Problemen.

    Gruß, LX

    --
    RFC 1925, Satz 2: Egal, wie fest man schiebt, ganz gleich, wie hoch die Priorität ist, man kann die Lichtgeschwindigkeit nicht erhöhen.
    1. Hey LX, danke schonmal für deine Ideen!

      ich habe sie alle ausprobiert, leider kommt es dennoch vor, dass es nicht funktioniert. Würde den ein andere Browser das Problem beheben?

      Zusätzlich habe ich beobachtete, dass der Fehler vermehrt auftritt, wenn man das Script ausführt und dann neu läd.

      Grüße!

  2. Doch manchmal funktioniert das, manchmal nicht! Wenn es nicht funktioniert hat, spuckt mir die Fehlerkonsole von Firefox(Version 3.6.10) folgendes aus:

    Kann ich nicht nachvollziehen. Ich hab deinen Code 1:1 kopiert und es funktionert einwandfrei.

    Struppi.