diff --git a/src/ol/Image.js b/src/ol/Image.js index bf4601d6fb..f9d39dc8b3 100644 --- a/src/ol/Image.js +++ b/src/ol/Image.js @@ -159,7 +159,7 @@ class ImageWrapper extends ImageBase { export function listenImage(image, loadHandler, errorHandler) { const img = /** @type {HTMLImageElement} */ (image); - if (IMAGE_DECODE) { + if (img.src && IMAGE_DECODE) { const promise = img.decode(); let listening = true; const unlisten = function() { diff --git a/test/spec/ol/image.test.js b/test/spec/ol/image.test.js index 99798a0610..34a49159fa 100644 --- a/test/spec/ol/image.test.js +++ b/test/spec/ol/image.test.js @@ -21,6 +21,17 @@ describe('HTML Image loading', function() { }, 200); }); + it('handles load event when src is set later', function(done) { + listenImage(img, handleLoad, handleError); + img.src = 'spec/ol/data/dot.png'; + + setTimeout(function() { + expect(handleLoad).to.be.called(); + expect(handleError).not.to.be.called(); + done(); + }, 200); + }); + it('handles error event', function(done) { img.src = 'invalid.jpeg'; listenImage(img, handleLoad, handleError);