如果 触发了touchmove && 不阻止默认行为 ,touchEnd 无法被触发
android浏览器 不阻止默认行为 时, touchmove 只会被触发一次【偶尔是两次】, ios可以连续触发,而且触发时机十分不准确;
最后得到了一些结论: touchEnd 事件存在兼容性问题, 在4.0.X的机器,如果touchMove触发了,就不会触发thoucEnd, 要在 touchmove加上 event.preventDefault(); 如果不希望阻止默认滚动的话,看来是需要模拟滚动了诶.
扫码关注w3ctech微信公众号
能不能改用监听scroll事件
@lilyh: 谢谢您的回答。 scroll的触发是在 手指离开时,也就是相当于touchEnd 之后,而我希望的是在连续触摸移动时.. 所以scroll不好用诶..
touchmove不preventDefault,也可以出发touchend的啊。。怎么会不行
@奇遇 哦,是吗?难道是我测试的不够准确,我的手机上不行,PC的chrome模拟器是可以的...
@奇遇 要不就是我的页面是需要发生滚动的哦,不发生滚动的时候会不会触发,这个我还真没测试过..呵呵,我再去看看
我下午刚刚才写过,iOS和安卓4.2+都没问题啊
第一个问题:正常情况下,touchmove时如果不调用preventDefault方法,touchend是可以被触发的。你再尝试一下。
第二个:你把touchmove事件绑定到window试试。
@webzhao 您好, 我刚才测试了下,还是不行, 我是 android4.1.2 UC9.8 , 绑定到window也不会进行连续触发 ; 而且产品要求兼容低端机...所以不能只考虑4.2+的; 还是多谢了。
最后得到了一些结论: touchEnd 事件存在兼容性问题,在4.0.X的机器,如果touchMove触发了,就不会触发thoucEnd, 要在 touchmove加上 event.preventDefault(); 看来某些情况下还是需要模拟滚动诶...
共收到9条回复