From 4406abc24c0e6f3f503225a0c3194f3a1f629bd0 Mon Sep 17 00:00:00 2001 From: yuanwenhao Date: Tue, 18 Feb 2025 09:45:04 +0800 Subject: [PATCH 1/2] fix: blank image in safari, algin #461, #478 --- src/embed-images.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/embed-images.ts b/src/embed-images.ts index 0d7b51ad..df7767a6 100644 --- a/src/embed-images.ts +++ b/src/embed-images.ts @@ -67,7 +67,12 @@ async function embedImageNode( const image = clonedNode as HTMLImageElement if (image.decode) { - image.decode = resolve as any + image.onload = () => { + image.decode().then(() => { + requestAnimationFrame(resolve) + }) + } + image.decoding = 'sync' } if (image.loading === 'lazy') { From 4d742a25e68fa87c0b4d9684083c61b11ed099d1 Mon Sep 17 00:00:00 2001 From: yuanwenhao Date: Wed, 16 Jul 2025 11:08:09 +0800 Subject: [PATCH 2/2] fix: image decode 'then' -> 'finally' --- src/embed-images.ts | 2 +- src/util.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/embed-images.ts b/src/embed-images.ts index df7767a6..94f49d0b 100644 --- a/src/embed-images.ts +++ b/src/embed-images.ts @@ -68,7 +68,7 @@ async function embedImageNode( const image = clonedNode as HTMLImageElement if (image.decode) { image.onload = () => { - image.decode().then(() => { + image.decode().finally(() => { requestAnimationFrame(resolve) }) } diff --git a/src/util.ts b/src/util.ts index 3d430c8f..1bd37304 100644 --- a/src/util.ts +++ b/src/util.ts @@ -200,7 +200,7 @@ export function createImage(url: string): Promise { return new Promise((resolve, reject) => { const img = new Image() img.onload = () => { - img.decode().then(() => { + img.decode().finally(() => { requestAnimationFrame(() => resolve(img)) }) }