android浏览器touch事件
项目有个交互需要实现手指滑动选择评论的星级,pc端当然是mousedown,mousemove,mouseup监听实现。
但在android设备上mousemove是不好监听的,同类的方法是touchstart,touchmove,touchend。我需要获取手指滑动时的坐标位置,直接使用event.clientX是不起作用的,要使用event.changedTouches[0].clientX才好。
具体实例代码片段如下:
function touchMove(e){
e.preventDefault();
w = e.changedTouches[0].clientX - l;
if(w%unit != 0){
curLevel = Math.floor(w/unit) + 1;
}
if(curLevel>5){curLevel = 5;}
if(curLevel<1){curLevel = 1;}
setStar(curLevel);
}
function touchEnd(e){
e.preventDefault();
$(document)[0].removeEventListener("touchmove",touchMove,false);
}
jstar[0].addEventListener("touchstart",function(e){
e.preventDefault();
$(document)[0].addEventListener("touchmove",touchMove,false);
$(document)[0].addEventListener("touchend",touchEnd,false);
},false);
##20130808扩充
*兼容pc鼠标事件、移动端触控事件
var isTouchPad = (/hp-tablet/gi).test(navigator.appVersion),
hasTouch = \'ontouchstart\' in window && !isTouchPad,
START_EV = hasTouch ? \'touchstart\' : \'mousedown\',
MOVE_EV = hasTouch ? \'touchmove\' : \'mousemove\',
END_EV = hasTouch ? \'touchend\' : \'mouseup\';