定义移动方向javascript(Android设备)

时间:2014-04-24 08:23:23

标签: javascript cordova

我正在编写PhoneGap应用程序,并在一个视图上使用滑动和滚动。对于滚动我使用原生滚动(我曾尝试使用iScroll,但我的视图中有很多输入,所以我发现它的更好的解决方案是本机滚动)。为了定义移动方向,我在数组中收集前10个touchmove事件并检查clientX和clienY值,然后定义平均值。并且一切都应该是好的,但是在Android touchmove事件中不起作用的是没有preventDefault()的滚动视图。所以,根据这个问题,我使用preventDefault()进行前10个touchmove事件,而不是依赖方向继续使用preventDefault()并进行滑动,或者不使用preventDefault()并进行滚动。但当我滚动时没有任何事情发生(。有一个例子:

var list = document.querySelector('ul');
var arr = [];
var ev = document.createEvent('UIEvent');
var evEnd = document.createEvent('UIEvent');
var evCancel = document.createEvent('UIEvent');
var flag = false;
ev.initUIEvent("touchstart", true, true);
evEnd.initUIEvent("touchend", true, true);
evCancel.initUIEvent("touchcancel", true, true);
list.addEventListener('touchstart', startMove, false)
list.addEventListener('touchend', endMove, false)
function startMove(e){
    list.addEventListener('touchmove', move, false)
}
function move(e){
   if(flag){
     return;
   }
    e.preventDefault();
    arr.push(e);
    if(arr.length>10){
       flag = true;
       list.dispatchEvent(evEnd);
       list.dispatchEvent(evCancel);
       list.dispatchEvent(ev);
       return;
    }
}
function endMove(e){
    list.removeEventListener('touchmove', move, false)
    list.removeEventListener('touchend', endMove, false)
}

http://jsfiddle.net/tnqHQ/17/

0 个答案:

没有答案