[Reopen #5998] 钉钉小程序Android事件穿透问题仍未解决
- 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
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