`
mircle
  • 浏览: 22943 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

tap click fastclick

 
阅读更多

 记录一次使用 zepto.mdatetimer.js  的经历:

mdatetimer 里面使用都是  tap事件 ,由于我们引入了 fastclick ,所以需要将tap事件都转成  click事件,详情如下: 

 

 

 

移动端开发  事件定义  tap   click(会有200-300ms的延迟)

 

   1  直接定义成tap事件   
   2  定义click事件  引入fastclick  js  lib

 

    定义成tap 事件    引入fastclick     会引发冲突,造成input 中间部分无法响应事件  input前面标签部分   后面部分 可以响应点击事件   而且也不是很稳定

 

     转载:
http://blog.csdn.net/sly94/article/details/51701188

 

移动端用tap时会有穿透问题

一:click与tap比较

click与tap都会触发点击事件,但是在手机web端,click会有200-300ms的延迟,所以一般用tap代替click作为点击事件。singleTap 和doubleTap分别代表单次点击和双次点击

二:tap的穿透处理

使用zepto框架的tap的点击事件,来规避click事件的延迟响应,会出现穿透,即点击会触发非当前层的点击事件。

三:穿透原因

问题:在html5点击了q以后,弹出b的弹框

因为tap事件是通过document绑定了touchstart和touchend事件实现,$('.q')上,当touchend事件冒泡到document上以后执行$(this).hide();此时$('.b'),就处在了页面的最前面

现在touchend冒泡到了document上,并且$('.b')在页面的最前面,然后就触发了click事件

四:解决穿透问题

1.github上有一个叫做fastclick的库,它能规避移动设备上click事件的延迟响应https://github.com/ftlabs/fastclick将它用script标签引入页面(该库支持AMD,可按照AMD规范,用require.js的模块加载器引入),并且在dom  ready时初始化在body上,如:

$(function(){

new FastClick(document.body);

})

然后给需要“无延迟点击”的元素绑定click事件(注意不再是绑定zepto的tap事件)即可。

也可以不在body上初始化它,而在某个dom上初始化,这样,只有设个dom和它的子元素才能享受"无延迟"的点击

实践开发中,当元素绑定fastclick后,click响应速度比tap还要快一点。

2.为元素绑定touchend事件,并在内部加上e.preventDefault();

$demo.on('touchend',function(e){

//改变了事件名称,tap是body上才被触发,而touchend是原生的事件,在dom本身上就会被捕获触发

$demo.hide();

e.preventDefault();//阻止“默认行为”

});

五:touch事件

touch是针对触屏手机上的触摸事件。现金大多数触屏手机webkit内核提供了touch事件的监听

包含:touchstart touchmove touchend touchcancel四个事件

 

touchstart touchmove touchend事件可以类比于mousedown mouseover mouseup的触发

  • 大小: 20.7 KB
分享到:
评论

相关推荐

    FastClick是一个JS库用于消除click事件与Tap敲击之间的300延迟

    当用户触摸屏幕时,FastClick会记录下触摸的点,并在触摸结束(touchend)事件触发时,如果用户没有进行滑动操作,FastClick则会立即模拟一个click事件,这样就跳过了原本300毫秒的延迟。同时,FastClick还处理了...

    通过fastclick源码分析彻底解决tap“点透”

    值得注意的是,FastClick并不需要将所有`click`事件替换为`tap`事件,这对于那些不希望修改大量已有代码的项目来说是一个巨大的优势。 在实际应用中,引入FastClick并正确配置后,可以显著改善移动设备上的交互体验...

    移动事件快速点击

    `FastClick`还处理了一个称为"点透"(tap-through)的问题。在某些情况下,当用户快速点击一个覆盖在其他元素上的透明元素时,底层的元素可能会接收到`click`事件,这通常是不期望的行为。`FastClick`通过取消`...

    fastclick插件导致日期(input[type=”date”])控件无法被触发该如何解决

    fastclick与tap都是利用“touch”事件来模拟“click”事件的; 然后我们来大致的了解一下fastclick的工作原理(来自往上的copy): 在我们的app中跟踪所有的TouchStart事件,在接收到touchend事件的时候,触发一个...

    百度 touch js 解决 移动端click点击事件

    为了克服这个问题,开发者通常会采用像FastClick、Tap.js等库,而“百度touch.js”则是另一个有效的解决方案。 百度touch.js是一个轻量级的JavaScript库,专为了解决移动端Web应用中的点击事件延迟问题。它通过监听...

    前端开源库-iostap

    `iostap`是一个轻量级的JavaScript库,专为iOS设备设计,其主要目标是模仿和增强浏览器中对`touchstart`、`touchmove`和`touchend`等触摸事件的处理,提供更接近于`click`事件的`tap`事件体验。在iOS设备上,原生的`...

    清除从iOSwebview点击的300ms延迟

    2. **利用CSS属性`-webkit-tap-highlight-color`**:通过设置这个属性为`transparent`,可以阻止浏览器在触摸元素时显示高亮效果,这样浏览器就不会等待双击,从而减少延迟。但这并不能完全消除300ms的延迟,只能...

    移动端开发技术文档.docx编程资料

    FastClick库可以将**click**事件转换为**tap**事件,从而提高触摸设备上的用户体验。只需简单地添加一行代码即可启用FastClick: ```javascript FastClick.attach(document.body); ``` #### 四、图片懒加载 **...

Global site tag (gtag.js) - Google Analytics