发现在android4.0以上的webkit浏览器touchmove事件只触发一次

本文介绍了在Android 4.0及以上版本的WebKit浏览器中遇到的touchmove事件只触发一次的问题,并提供了一个简单有效的解决方案:通过在事件处理函数中调用event.preventDefault()来避免默认行为导致的事件终止。

发现在android4.0以上的webkit浏览器touchmove事件只触发一次



加个event . preventDefault()就可以了。

小程序开发中,若遇到触摸事件一次触发 `touchstart`,第二次才触发 `touchmove` 和 `touchend` 的问题,可参考以下思路解决: ### 1. 检查绑定方式 在微信小程序里,使用 `bind` 绑定触摸事件时,可能会出现真机中事件触发异常的状况,像三个方法在手指离开屏幕后同时执行等问题。可以把 `bind` 替换成 `catch` 来解决此问题。 示例代码如下: ```html <!-- 原来使用 bind 的情况 --> <scroll-view bindtouchstart='start' bindtouchmove='move' bindtouchend='end'></scroll-view> <!-- 修改为 catch --> <scroll-view catchtouchstart='start' catchtouchmove='move' catchtouchend='end'></scroll-view> ``` 通过这样修改,事件能马上执行,而非在手指抬起后同时执行三个事件 [^2]。 ### 2. 检查事件处理函数 要保证 `touchstart`、`touchmove` 和 `touchend` 对应的事件处理函数没有逻辑错误或者阻塞代码,避免影响后续事件触发。 示例代码如下: ```javascript Page({ start: function(e) { // 处理 touchstart 事件 console.log('touchstart', e); }, move: function(e) { // 处理 touchmove 事件 console.log('touchmove', e); }, end: function(e) { // 处理 touchend 事件 console.log('touchend', e); } }) ``` ### 3. 检查样式和布局 页面的样式和布局也许会对触摸事件触发产生影响。要确保元素的大小、位置以及 `overflow` 等样式属性没有问题,避免元素被遮挡或者无法正常响应触摸事件。 ### 4. 真机调试和日志输出 运用真机调试功能,在事件处理函数中添加日志输出,详细记录事件触发的情况,从而定位问题。 示例代码如下: ```javascript Page({ start: function(e) { console.log('touchstart triggered', e); }, move: function(e) { console.log('touchmove triggered', e); }, end: function(e) { console.log('touchend triggered', e); } }) ```
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值