ในผลิตภัณฑ์ของเรา เราพบปัญหาที่บางครั้งสร้าง Canvas ที่เกินขีดจำกัดที่เบราว์เซอร์กำหนด (ฉันได้รับขีดจำกัดจาก คำถามนี้)
ในการพยายามหาวิธีเตือนผู้ใช้หรืออย่างน้อยก็เพื่อกอบกู้การดำเนินการ ฉันต้องการดูว่าฉันสามารถรวมการกำหนดค่าเริ่มต้นของ Canvas ไว้ในคำสั่ง try/catch ได้หรือไม่ บางอย่างเช่นนี้:
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!";
}
};
ใน Firefox การสร้าง Canvas ที่มีขนาดใหญ่เกินไปทำให้เกิดข้อยกเว้นและทุกอย่างทำงานได้อย่างถูกต้อง
อย่างไรก็ตาม Chrome ทำให้ Canvas ขัดข้อง (แสดงไอคอนหน่วยความจำไม่เพียงพอ) แต่ไม่มีข้อยกเว้นดังนั้นฉันจึงไม่รู้ว่าจะจับความจริงที่ว่า Canvas ไม่สามารถสร้างได้อย่างไร
โดยพื้นฐานแล้ว โค้ดด้านบนจะแสดงความสำเร็จใน Chrome/Opera, ความล้มเหลวใน Firefox และผืนผ้าใบทั้งสองไม่ทำงาน
ไม่มีใครรู้วิธีที่เชื่อถือได้ในการตรวจสอบว่า Canvas ทำงานใน Chrome หรือไม่
ฉันได้สร้างซอนี้เพื่อแสดงให้เห็นว่าเกิดอะไรขึ้น