touchmove e.preventDefault() 不生效

大致代码如下

$el.on('touchmove',(event) => {
   if (statement) {
       event.preventDefault();
    } 
});

如果第一次 touchmove 事件发生的时候满足了if条件,那么没有问题。
如果第一次 touchmove 事件不满足if条件,而在用户滑动了一会以后才满足这个if条件,这个event.preventDefault()不会生效。
请问该怎么解决……

阅读 9.3k
2 个回答

因为在chrome,或者说再webkit核浏览器里,当你浏览器在一个滚动的状态时,touchmove的cancelable属性被默认置为false,所以preventDefault是不会生效的。

所以要么你在start的时候就阻止,要么就换一种方式去达到你的需求。

`xxx.addEventListener('touchStart',function(e){e.preventDefalut()})`
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题