安卓客户端 7.0.7 1521
微信客户端 7.0.8
canvas 父元素上touchstart touchmove touchend 事件无法被捕获到,
由于开发工具上基础库没有2.9.0的选项,所以选择的是2.8.3 实际发生基础库为2.9.0
业务场景为:拖动四个点,选中特定区域,然后进行截图操作。为了在拖动是更流畅,将TOUCH事件绑定在父元素上。
之前该场景一直使用正常,在今天2019-10-15日之后突然大量用户反馈四个点拖动时无反应。经过代码重现后发现在基础库为2.9.0的小程序中,canvas阻止事件冒泡,导致父元素无法捕获到touch事件。因此无法拖动四个点进行绘制
wxml
<view class="canvas-container" style="width:360px;height:660px" bindtouchstart="startEvent" bindtouchmove="moveEvent" bindtouchend="endEvent" >
<canvas style="width: 360px; height: 360px;border: 1px solid red" canvas-id="firstCanvas"></canvas>
</view>
10.24 update---------------------
貌似2.9.0(2019.10.22 12:35)这个版本 事件冒泡又恢复了 并且canvas性能更好了 官方还会再次修改吗?
昨天我几十个小程序全部瘫痪,现在可以了
原生组件事件不能冒泡,请使用新的canvas接口https://developers.weixin.qq.com/community/develop/doc/00020a02c2c040114d19a398f5b001?blockType=1&jumpto=comment&commentid=000e601d59cf30efcb190abbe564
canvas 标签的 touchstart touchmove touchend 事件无法被捕获到
正确的方式:
bindtouchstart="touchstartCanvas"
bindtouchmove="touchmoveCanvas"
bindtouchend="touchendCanvas"
错误的方式:
bindtouchstart="{{index.touchstartCanvas}}"
bindtouchmove="{{index.touchmoveCanvas}}"
bindtouchend="{{index.touchendCanvas}}"
错误: <canvas bind:touchstart="touchstartCanvas"></canvas>
正确: <canvas bindtouchstart="touchstartCanvas"></canvas>