移动端点击穿透

我们在移动端点击事件click对比touchend会有很明显的300ms的延迟,为啥?

浏览器在 click 后会等待约300ms去判断用户是否有双击行为(手机需要知道你是不是想双击放大网页内容)。

如果300ms内没有再一次click,那么就判定这是一次单机行为。所以我们基本上都用(touchstart/touchend)。

但是这些事件在执行完之后还会执行一次click事件;

解决方法:利用pointer-events :

pointer-events 相关特性:

  1. 阻止用户的点击动作产生任何效果
  2. 阻止缺省鼠标指针的显示
  3. 阻止CSS里的hover和active状态的变化触发事件
  4. 阻止JavaScript点击动作触发的事件
$('select').css('pointer-events','none');

//因为click事件需要300ms响应,所以我们时间定义350ms,时间一过又可以正常点击了
 setTimeout(function(){$('select').css('pointer-events','all')},350)

 

posted @ 2018-03-28 17:49  吴小样  阅读(58)  评论(0)    收藏  举报