Dalam produk kami, kami mengalami masalah ketika kanvas terkadang dibuat melebihi batas yang ditetapkan oleh browser (saya mendapatkan batas tersebut dari pertanyaan ini).
Dalam mencoba menemukan cara untuk memperingatkan pengguna atau setidaknya menyelamatkan operasi, saya ingin melihat apakah saya dapat menggabungkan inisialisasi kanvas dalam pernyataan coba/tangkap, seperti ini:
createCanvas = function() {
var element = document.createElement("canvas");
element.id = "canvasId";
document.getElementById("container").appendChild(element);
return element;
};
tryToCreateCanvas = function() {
var width = document.getElementById("widthInput").value;
var height = document.getElementById("heightInput").value;
var element = createCanvas();
try {
element.width = width;
element.height = height;
var context = element.getContext("2d");
context.scale(width, height);
document.getElementById("result").innerHTML = "Success!";
} catch (e) {
document.getElementById("result").innerHTML = "Failure!";
}
};
Di firefox, membuat kanvas yang terlalu besar menimbulkan pengecualian dan semuanya berfungsi dengan benar.
Namun Chrome, membuat kanvas mogok (menampilkan ikon sedikit kehabisan memori), tetapi tidak memberikan pengecualian, jadi saya tidak tahu cara mengetahui fakta bahwa kanvas gagal dibuat.
Jadi pada dasarnya kode di atas akan menunjukkan Sukses di Chrome/Opera, Kegagalan di Firefox, dan kedua kanvas tidak berfungsi.
Adakah yang tahu cara andal untuk memeriksa apakah kanvas berfungsi di Chrome?
Saya telah membuat biola ini untuk mengilustrasikan apa yang terjadi