dcloudio / dcloudio/uni-app

[Reopen #5998] 钉钉小程序Android事件穿透问题仍未解决

Open
#6,018 2 comments 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
JavaScript
Stars
41.6k
Forks
3.7k
Avg merge
7h 6m
Merged PRs (30d)
6

Description

钉钉原生没有这个问题

大模型搜索:
根本原因:UniApp 的转换机制
这个 bug 的核心原因是 UniApp 在将 Vue 代码转换为小程序代码时,其事件绑定机制和 DOM 渲染逻辑与钉钉 Android 端的 WebView 在某些场景下产生了兼容性问题。

简单来说,UniApp 的跨端框架为了兼容多平台,需要对事件监听和视图更新做一层封装和转换。在 Android 钉钉小程序这个特定组合下,这层转换可能没能完全处理好弹窗关闭动画期间,触摸事件被"穿透"到底层按钮的情况。而在 iOS 端,因为 WebView 和事件处理机制不同,这个问题就不容易出现。

你们找些安卓机器测试下就可以了,就是用一些popup弹出层组件,还有我用自己写的一个弹出层v-if显示隐藏也会出现这个问题,还有就是点击按钮不要弹出层,直接调用后端接口,点击查询之后又从新执行了点击按钮调接口的操作了,这个问题是在安卓手机上偶尔出现,但是版本比较低的安卓系统出现次数多一些

Contributor guide

Open the contributing guide

Research direction

Start by reproducing the issue in a DingTalk Android mini program with a popup component and with a custom v-if-controlled overlay, especially during close animation. Verify the reported duplicate backend request or touch reaching the underlying button on older Android versions; done means the underlying control receives no unintended event.

Written by the indexing model from the issue text.

Assessment

Tech stack
android, javascript
Domain
mobile-dev
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.