From 8ffac91f05c71d6ca6c59aeb63157f1f20da76ad Mon Sep 17 00:00:00 2001 From: Artyom Khudyakov Date: Tue, 14 Dec 2021 19:17:11 +0300 Subject: [PATCH] Added error handler for Image.fromURL --- src/shapes/Image.ts | 4 +++- test/unit/Image-test.ts | 10 ++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/shapes/Image.ts b/src/shapes/Image.ts index 25091a04..7032d7d4 100644 --- a/src/shapes/Image.ts +++ b/src/shapes/Image.ts @@ -122,6 +122,7 @@ export class Image extends Shape { * @memberof Konva.Image * @param {String} url image source * @param {Function} callback with Konva.Image instance as first argument + * @param {Function} onError optional error handler * @example * Konva.Image.fromURL(imageURL, function(image){ * // image is Konva.Image instance @@ -129,7 +130,7 @@ export class Image extends Shape { * layer.draw(); * }); */ - static fromURL(url, callback) { + static fromURL(url, callback, onError = null) { var img = Util.createImageElement(); img.onload = function () { var image = new Image({ @@ -137,6 +138,7 @@ export class Image extends Shape { }); callback(image); }; + img.onerror = onError; img.crossOrigin = 'Anonymous'; img.src = url; } diff --git a/test/unit/Image-test.ts b/test/unit/Image-test.ts index 02d7b29b..4cf4fa43 100644 --- a/test/unit/Image-test.ts +++ b/test/unit/Image-test.ts @@ -356,6 +356,16 @@ describe('Image', function () { }); }); + it('check loading failure', function (done) { + var stage = addStage(); + var layer = new Konva.Layer(); + stage.add(layer); + var src = 'non-existent.jpg'; + Konva.Image.fromURL(src, null, function (e) { + done(); + }); + }); + it('check zero values', function (done) { loadImage('darth-vader.jpg', (imageObj) => { var stage = addStage();