Peter Pan
Peter Pan
看到这里有不少人被 Mobilebone+IScroll+Zepto+FastClick 这几个库搭配使用产生的问题所折磨,我们团队也是经过了很长时间的测试,在现有的测试机器没有发现问题的情况下分享下解决方案给大家参考,当然,由于我们测试的安卓机还不足够多,也欢迎大家用更多的机型做测试,然后将问题反馈到这里,如果实在不行,修改IScroll源代码一定可以解决,当然,也可以不使用IScroll。 先说说这个搭配可能会出现的各种各样的诡异问题吧,比如: 1、如果IScroll 配置click:true,tap:true 的时候,Zepto绑定click事件会执行2次,而如果在这个配置下加入FastClick,则会导致Mobilebone的连接点不动。 2、如果配置click:false,tap:false,Mobilebone的连接在有无FastClick的情况下都会出现点不动,尤其是安卓机。 目前的解决方案: 1、IScroll 配置 click:false, tap:false, 仔细看了 IScroll的源码,IScroll5可以通过下面的参数来配置,以下两项才是重点: preventDefault: false, preventDefaultException:{tagName:/^(SPAN|A|INPUT|TEXTAREA|BUTTON|SELECT)$/}, 如果配置了preventDefault为false,其实就不需要配置 preventDefaultException了,也就是说,preventDefaultException只在preventDefault为true的前提下生效。 Mobilebone点不动的原因在于 IScroll5的默认配置preventDefault为true,而preventDefaultException的默认配置里没有排除A标签。 如果大家使用 Mobilebone+IScroll+Zepto+FastClick 这几个库搭配,推荐设置preventDefault 为 false, 2、引入FastClick绑定到 document.body 这个问题的解决思路是,想办法干掉IScroll里有关与对click/tap事件的一切处理方法(你乖乖的滚动就好了,其他的事件我们自己来处理,好在IScroll5提供了如上可以配置的方法),将click事件的处理完全委托给FastClick,这样可以避免掉移动设备上的300ms延时问题。...