diff --git a/pal/system-info/minigame/system-info.ts b/pal/system-info/minigame/system-info.ts index 3fc5de82029..bed493f382b 100644 --- a/pal/system-info/minigame/system-info.ts +++ b/pal/system-info/minigame/system-info.ts @@ -97,13 +97,7 @@ class SystemInfo extends EventTarget { this.isXR = false; // init capability - const _tmpCanvas1 = document.createElement('canvas'); // TODO: remove this - let supportWebp; - try { - supportWebp = TEST ? false : _tmpCanvas1.toDataURL('image/webp').startsWith('data:image/webp'); - } catch (e) { - supportWebp = false; - } + const supportWebp = this._supportsWebp(); const isPCWechat = WECHAT && this.os === OS.WINDOWS && !minigame.isDevTool; this._featureMap = { @@ -126,6 +120,23 @@ class SystemInfo extends EventTarget { this._registerEvent(); } + private _supportsWebp (): boolean { + // NOTE: canvas.toDataURL() is not supported on WeChat iOS end (Found on iPhone 7p) + const isIOSWechat = WECHAT && this.os === OS.IOS; + const _tmpCanvas = document.createElement('canvas'); // TODO: remove this + let supportWebp: boolean; + if (isIOSWechat) { + supportWebp = true; + } else { + try { + supportWebp = TEST ? false : _tmpCanvas.toDataURL('image/webp').startsWith('data:image/webp'); + } catch (e) { + supportWebp = false; + } + } + return supportWebp; + } + private _registerEvent () { minigame.onHide(() => { this.emit('hide');