From 8446855381eeab79d286094db86407f3fa035758 Mon Sep 17 00:00:00 2001 From: fxy060608 Date: Sun, 30 Jan 2022 23:37:03 +0800 Subject: [PATCH] fix(app): html element with event (#3240) --- .../src/view/plugin/componentInstance.ts | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/packages/uni-core/src/view/plugin/componentInstance.ts b/packages/uni-core/src/view/plugin/componentInstance.ts index e3a3cc1c9..1af7aff47 100644 --- a/packages/uni-core/src/view/plugin/componentInstance.ts +++ b/packages/uni-core/src/view/plugin/componentInstance.ts @@ -19,11 +19,15 @@ export function $nne( if (!(evt instanceof Event) || !(currentTarget instanceof HTMLElement)) { return [evt] } - if (currentTarget.tagName.indexOf('UNI-') !== 0) { - return [evt] + const isHTMLTarget = currentTarget.tagName.indexOf('UNI-') !== 0 + // App 平台时不返回原始事件对象 https://github.com/dcloudio/uni-app/issues/3240 + if (__PLATFORM__ === 'h5') { + if (isHTMLTarget) { + return [evt] + } } - const res = createNativeEvent(evt) + const res = createNativeEvent(evt, isHTMLTarget) if (isClickEvent(evt)) { normalizeClickEvent(res as unknown as WechatMiniprogram.Touch, evt) @@ -54,12 +58,19 @@ function findUniTarget(target: HTMLElement): HTMLElement { return target } -export function createNativeEvent(evt: Event | TouchEvent) { +export function createNativeEvent( + evt: Event | TouchEvent, + htmlElement: boolean = false +) { const { type, timeStamp, target, currentTarget } = evt const event = { type, timeStamp, - target: normalizeTarget(findUniTarget(target as HTMLElement)), + target: normalizeTarget( + htmlElement + ? (target as HTMLElement) + : findUniTarget(target as HTMLElement) + ), detail: {}, currentTarget: normalizeTarget(currentTarget as HTMLElement), } -- GitLab