FastClick使用之trigger触发click失效

最近为了提高web app在ios上的点击效率,使用了FastClick.js,效果很明显,基本是点击后立马有反馈。但是发现一个问题,在使用模拟点击的时候,并不能触发点击的目的。javascript

$("#btn").trigger("click");//模拟点击css

而以上代码,在安卓上,却能正常触发。html

因而百度查找了相关的资料,找到如下内容(引用自http://amazeui.org/1.x/javascript/fastclick/)java

不该用 FastClick 的场景ios

 

桌面浏览器web

若是 viewport meta 标签 中设置了 width=device-width, Android 上的 Chrome 32+ 会禁用 300ms 延时;浏览器

 Copyapp

<meta name="viewport" content="width=device-width, initial-scale=1">iphone

viewport meta 标签若是设置了 user-scalable=no,Android 上的 Chrome(全部版本)都会禁用 300ms 延迟。ide

IE10 中,能够使用 css 属性 -ms-touch-action: none 禁止元素双击缩放(参考文章)。

根据上面描述,终于知道在安卓之因此能生效,是由于属于FastClick不该用的场景,而IOS则应用上了FastClick的效果。因而跟踪代码,各类调试,发现了在ios上,须要调用“模拟两次触发”才能完成一次真正的点击事件;

因而写了以下扩展:

var notNeed = FastClick.notNeeded(document.body);

$.fn.triggerFastClick=function(){

    this.trigger("click");

        if(!notNeed){

        this.trigger("click");

    }

}

须要用到模拟点击事件的时候,就使用$("#btn").triggerFastClick()来代替原来的trigger("click");

转载自 http://www.2cto.com/kf/201509/442506.html

相关文章
相关标签/搜索