diff --git a/packages/uni-core/src/view/plugin/componentInstance.ts b/packages/uni-core/src/view/plugin/componentInstance.ts index e3a3cc1c91af5d9f64168209178f667e783facf5..1af7aff4744ee05d0ed26ec20d4853171d996930 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), }