Skip to content

v0.13.1 — 手势不再外泄:画布与浏览器各动各的

Choose a tag to compare

@zhan-tz zhan-tz released this 16 Aug 18:27
· 5 commits to main since this release

用户报告:画布上双指平移时外层页面跟着一起滚。

根因:React 17+ 把合成 onWheel 注册在根节点的 passive 监听器上——handler 里的 e.preventDefault() 是静默空操作(控制台会出现 'Unable to preventDefault inside passive event listener'),页面滚动从未被阻止。

修复:

  • 画布与图片灯箱都改为原生 addEventListener('wheel', …, { passive: false }),ref 携带最新 handler 闭包、effect 绑定/解绑
  • preventDefault 现在真正吞掉手势:双指平移只动相机,浏览器页面不动;捏合同理
  • 检查器与叙述引文内滚动容器加 overscroll-behavior:contain,滚到头也不会链式带动外层

实测(playwright):滚轮事件 camera 平移生效、passive 违规告警 0、window/祖先滚动位置不变、平移/捏合缩放手感与 v0.12.0 一致;引文、浮层检查器、dz 四产物回归全绿,零报错。