时隔已久,没有写技术博客了。对于过去的2016年,总的来说是迷茫、挣扎、痛苦的。2017年,开端貌似不错,可能正视了自己的挫折,也稍微摆正了自己的态度吧
进入主题:Android 4.x touchmove事件兼容问题。
在开发 hybridApp 中,Android开发同事说在4.x的lg手机上,有滑不动的情况,看了之后发现是touchmove事件的问题。在4.x中,touchmove滑动只会动一下,所以无法得到准确的滑动距离,而我的代码中是要获取到这段move的距离的。
解决方法
- 一开始在touchstart中添加了e.preventDefault();阻止了默认行为之后,可以左右滑动了。
- 但是存在一个问题,自带的滚动被禁掉了。
- 最后的解决方法,针对5.0以下的做特殊处理
代码
在touchmove中:
if(_t.data.clientType == 'Android'){
var ua = window.navigator.userAgent;
if(parseInt(ua.split('Android ')[1].split(';')[0]) < 5){
e.preventDefault();
}
}
//计算距离代码
var touch = e.touches[0];
maintouch_x_end = touch.pageX;
maintouch = maintouch_x_end - maintouch_x;
maintouch_y_end = touch.pageY;
mainy = maintouch_y_end - maintouch_y;
// 计算滚动代码
if(_t.data.clientType == 'Android'){
var ua = window.navigator.userAgent;
if(parseInt(ua.split('Android ')[1].split(';')[0]) < 5){
_t.dom.main.find('.mainwrap').scrollTop(startTop - mainy*1.2)
}
}
最后
写的代码有点蠢,特别是判断版本那段