无名杀吧 关注:60,467贴子:276,751
  • 5回复贴,共1

请问有人知道 touchmove 事件为什么不触发吗

只看楼主收藏回复

如图,给 document 绑定了一个 touchstart 和 touchmove 事件
touchstart 倒是可以监听到,并 log 出相应消息
但是 touchmove 不行,当我用手指在 dialog 内部滑动的时候,不会 log 出相应消息(如图三,点击并滑动此时只 log 出了 touchstart 事件内的消息)
不过如果触碰的起点在 dialog 外部,或者 dialog 内的元素上,则可以触发 touchmove 事件
我 js 水平比较菜,还请有人能帮忙解惑




IP属地:山东1楼2022-01-06 16:04回复
    好家伙,这方面还没研究过,涨姿势了


    IP属地:浙江来自Android客户端2楼2022-01-06 18:26
    收起回复
      问题算是解决了:

      addEventListener() 方法的第三个参数 useCapture 为可选,其作用如下图所示(图源RUNOOB):

      虽然不是很明白,不过这样就可以监听到了。本人盲猜有可能是打开的 dialog 禁用了 touchmove 这种事件的监听(可以这样吗)。所以,如果通过冒泡传递则会截断我自己添加的 touchmove 监听事件;如果我换成捕获传递则会优先触发我的 touchmove 事件,再然后则是 dialog 的其他事件,所以可以正常监听到。
      总之在这里留一个解决方案,如果有人也遇到了这种情况不知道怎么解决,不妨试试。


      IP属地:山东3楼2022-01-08 05:25
      回复