目前只在微信浏览器测试了,iOS无问题,部分Android有下面这个问题

正常在微信浏览器里面点击的时候会触发 touchstart -> touchend
滑动的时候会触发 touchstart -> touchmove -> touchend

但是当我在touchstart中调用了preventDefault时,点击的流程很大概率(不是100%)会变成 touchstart -> touchmove -> touchend,这是为什么?
麻烦熟悉浏览器内核QQ靓号地图代码的高手帮忙解释下,跪谢 ORZ

demo

源码

<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="initial-scale=1.0,width=device-width,maximum-scale=1.0, user-scalable=0,minimum-scale=1.0"/><title>demo</title><style>html, body {height: 100%;margin: 0;padding: 0;
}</style></head><body><div id="demo"><div>slider1</div><div id="log"></div></div><script>var $log = document.querySelector('#log');var log = function(str) {var $l = document.createElement('p');
$l.innerText = str;
$log.children.length
? $log.insertBefore($l, $log.children[0])
: $log.appendChild($l);
};var $demo = document.querySelector('#demo');
$demo.addEventListener('touchstart', function(e) {
log('touchstart');// 可以将下面代码注释掉看看e.preventDefault();
});
$demo.addEventListener('touchmove', function() {
log('touchmove');
});
$demo.addEventListener('touchend', function() {
log('touchend');
});
$demo.addEventListener('click', function() {
log('click');
});</script></body></html>

回答

在touchmove中添加e.preventDefault(),将浏览器默认的滑动惯性去掉


更多相关文章

  1. 【前端】在苹果safari浏览器上video标签无法正常播放视频
  2. 【前端】网站自动登陆是前端控制还是后端?
  3. css与javascript重难点,学前端,基础不好一切白费!
  4. 浏览器输入域名网址访问后的过程详解
  5. vue--SEO
  6. vs code常用插件下载与http协议入门知识
  7. 无头浏览器Selenium的使用要点
  8. 开发工具使用
  9. 开学第一课

随机推荐

  1. android设置EditText不可编辑内容,响应点
  2. TextView处理显示字数过长
  3. IPC进程间通信
  4. 使用Python开发Android应用程序:第一节 在
  5. android第五天早:抗锯齿和全屏
  6. Android XML 不常用属性
  7. Hello World
  8. 系出名门Android(7) - 控件(View)之ZoomC
  9. android activity之间平滑切换
  10. Android开发工具——Android studio1.0正