錯誤:未捕獲的異常:[異常...]組件返回失敗代碼: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