错误:未捕获的异常:[异常...]组件返回失败代码:0x80040111(NS_ERROR_NOT_AVAILABLE)[nsIDOMCanvasRenderingContext2D.drawImage]“nsresult:”0x80040111(NS_ERROR_NOT_AVAILABLE)“location:”JS frame: :http://127.0.11.1/test/canvas5_b.php :: setup :: line 27“data:no]来自简单代码的javascript/canvas5错误
function setup() {
var e = document.getElementById("mycanvas");
var ctx = e.getContext('2d');
var meter = new Image();
meter.src = "meter.jpg";
var meter_bar = new Image();
meter_bar.src = "meter_bar.jpg";
//alert(meter);
ctx.beginPath();/////////LINE 27////////////
ctx.drawImage(meter, 50, 100);
//ctx.globalCompositeOperation = "lighter";
ctx.drawImage(meter_bar, 68, 123);
ctx.closePath();
}
window.onload = setup;
这两个图像都在正确的文件夹中。让我感到惊奇的是,如果你放了一个警报(米),它就会起作用。在第27行之前。就好像它没有加载,但我已经在window.onload上运行了,所以我没看到那是怎么回事。
编辑:这是一个图像加载时的问题(ty rob)。看来最好的在全球范围内宣布并设置图片src,然后调用的window.onload =设置,如:(纠正我,如果这是不好的)
var img1, img2;
img1 = new Image();
img2 = new Image();
//declare and set the images src
img1.src = "meter.jpg";
img2.src = "meter_bar.jpg";
var canvasHeight, canvasWidth;
canvasHeight = 300;
canvasWidth= 600;
var ctx;
function setup() {
var e = document.getElementById("mycanvas");
ctx = e.getContext('2d');
draw();
}
function draw() {
ctx.clearRect(0,0,canvasWidth, canvasHeight);
ctx.beginPath();
ctx.drawImage(img1, 50, 100);
ctx.drawImage(img2, 68, 123);
ctx.closePath();
}
window.onload = setup;
我以为img.onload不会在img.src之后触发,因为它已经加载。将不得不测试这一点。 – jason 2010-11-15 21:13:51
我刚刚重新安排它以解决这个问题。 – rob 2010-11-15 21:16:18