mobilebone
mobilebone copied to clipboard
跪求对tap事件的技术方案全解释
我一直跟着项目的更新去更新mobilebone源文件,但一直都被tap事件搞得很头痛。经常出现点击不了或者要双击的情况。重点是在各种设备表现不一致,用不同版本的Mobilebone、搭配不同的js库(如iscroll、zepto等等)表现都不同。本人小白,已哭晕在厕所,跪求鑫哥赐教。
我用微信实例里面的demo似乎还是有问题
使用iscroll,配置iscroll: click:true, tap:true 再结合mobilebone,在小米2、三星4.1、手机浏览器上都会遇到点不动的情况
iscroll如果单设置tap:true,mobilebone框架中很多时候a链接都跳转不了
Mobilebone会检测是否支持$().tap()事件绑定,如果支持,则使用tap事件,如果不支持,则使用原生的click事件~
iscroll自身就有tap处理,与Zepto本身就可能会冲突。还有一些touch相关的事件脚本,其处理也不一样。由于移动设备原本是没有tap事件的,因此,这些自定义的事情出现一些问题是在所难免的。
Mobilebone只是担任一个click/tap事件传递的角色,深层次的原因实际上不是Mobilebone导致的。
@xuetian120 有些tap事件为了不和click事件并发冲突,会干掉默认的click行为(如果你绑定了tap方法),因此,a链接都跳转不了,是由于mobilebone委托了tap方法,而这些tap方法干掉了click跳转行为导致。
其实我压根没有引入zepto的touch 模块对触摸事件的支持!如果iscroll只配置:tap:true没有click:true,结合mobilebone问题就会很严重,在Android 5.0.2米柚系统,普通a连接是不能点击的,但如果isrcoll加入配置click:true,Android 5.0.2 中的a连接可以点击,但是更严重的问题是三星Android 4.1、小米Android 4.4此类4系列的a都不能点击,蛋疼得很~
感谢鑫哥的回复! 嗯,我知道这不是Mobilebone导致的。 但对于我这种前端仅一般水平的菜鸟,处理这些问题太吃力了,所以想请教一下。 敢问,像iscroll那样,开发出不同重量级的mobilebone呢?重一点的整合常用的iscroll、zepto等等, 增强整个项目的生产力。便于大范围的应用处于更快速地开发出有原生体验的web app。
综合示例complex中,发现是注释了// /Android/i.test(navigator.userAgent) && pageinto.addEventListener('tap', Mobilebone.handleTapEvent, false);
如果修改wechat 的tap: true,配置使用click: true // bind custom scroll events for content var weChatScroll = new IScroll(pageinto.querySelector(".content"), { click: true }); 在chrome浏览器的模拟器上所有a链接都点击不了,同时设置 var weChatScroll = new IScroll(pageinto.querySelector(".content"), { click: true, tap: true }); 也是点击不响应。
修改后都是基于/test/complex/index.html#&pageHome页面点击列表。
更进一步,从isrcoll官方下载一份https://github.com/cubiq/iscroll代码,打开iscroll-master\demos\click,配置如下myScroll = new IScroll('#wrapper', { mouseWheel: true, click: true }); 在pc中使用chrome浏览器的模拟器打开预览,点击a链接,是有响应的!
综上,不得不怀疑mobilebone跟iscroll冲突或者对click做了某种拦截!
导致了只能是配置tap: true
myScroll = new IScroll($(pageinto).find(".content")[0], { probeType: 2, mouseWheel: true //tap: true }); 我现在tap click都关了 加了tap 点链接就会载入两次
别用tap了,直接用fastclick,一劳永逸
看这里 --- Mobilebone+IScroll+Zepto+FastClick 的推荐配置方案 https://github.com/zhangxinxu/mobilebone/issues/150
看来这是个共性问题
我在v2.6.1里面很不情愿打了个小补丁,外链地址,非Ajax地址会手动跳转下~
没懂啊 那iscroll应该怎样设计才能兼容啊