В нашем продукте мы столкнулись с проблемой, когда иногда создается холст, превышающий пределы, установленные браузерами (я получил ограничения от этого вопроса ).
При попыткечтобы придумать способ предупредить пользователей или хотя бы спасти операцию, я хотел посмотреть, смогу ли я обернуть инициализацию 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создание слишком большого холста вызывает исключение, и все работает правильно.
Однако Chrome вылетает холст (показывает значок нехватки памяти), но не выдает исключение, поэтому я нене знаю, как уловить тот факт, что холст не удалось создать.
Таким образом, в основном код выше покажет Успех в Chrome / Opera, Отказ в Firefox, и оба холста не работают.
Кто-нибудь знает надежный способ проверить работоспособность холста в Chrome?
Я создал эту скрипку , чтобы проиллюстрировать, что происходит