Javascript TouchStart、TouchMove、TouchEnd是否在触摸屏之外启动触摸?

Javascript TouchStart、TouchMove、TouchEnd是否在触摸屏之外启动触摸?,javascript,css,cordova,Javascript,Css,Cordova,在我的应用程序中,我有一个100%宽度的div,从顶部开始:50%;左:0px。我已经实现了一个touchStart/Move/End处理程序,它工作得很好,但前提是我在屏幕上启动触摸手势 如果我从屏幕外开始,将手指滑入屏幕,事件不会触发 如果触摸是在触摸屏外部启动的,则touchStart处理程序和touchMove处理程序都不会启动。我调试这个有困难,但可能有人有同样的问题,并提供足够的解决方案给我 我的代码是这样的(尽管我认为这个问题超出了我的影响): this.divs=document

在我的应用程序中,我有一个100%宽度的div,从顶部开始:50%;左:0px。我已经实现了一个touchStart/Move/End处理程序,它工作得很好,但前提是我在屏幕上启动触摸手势

如果我从屏幕外开始,将手指滑入屏幕,事件不会触发

如果触摸是在触摸屏外部启动的,则touchStart处理程序和touchMove处理程序都不会启动。我调试这个有困难,但可能有人有同样的问题,并提供足够的解决方案给我

我的代码是这样的(尽管我认为这个问题超出了我的影响):

this.divs=document.querySelectorAll(this.selector);
if(this.debug_level>1)console.log(“btn.length:+this.divs.length+”,对于选择器:+this.selector);
对于(vari=0;i1)console.log(e.touchs[0]);
pager.makeTouchDist(名称);
pager.touchdist[name].touchdistX=0;
pager.touchdist[name].touchdistY=0;
pager.touchdist[name].touchstartX=e.Touchs[0].screenX;
pager.touchdist[name].touchstartY=e.Touchs[0].screenY;
pager.touchdist[name].touchendX=e.touchs[0].screenX;
pager.touchdist[name].touchendY=e.touchs[0].screenY;
}捕获(e){
if(this.debug_level>0)console.log(“寻呼机:bodyTouchStart”+e.message);
}
},
bodyTouchMove:功能(e){
试一试{
对于(变量i=0;i pager.threshold&&pager.countState>0){
$(“body”).trigger(“slideStart”);
pager.divs[0]。style.marginLeft=pager.lastCompleteState+pager.touchdist[name]。touchdistX+“px”;
}
}捕获(e){
if(this.debug_level>0)console.log(“寻呼机:bodyTouchMove:+e.message”);
}
},

非常有意义-如果您没有实际触摸屏幕的触摸屏部分,那么设备如何知道触发触摸启动事件?(当然,操作系统需要先获取开始事件,然后才能检测到结束事件)如果我从屏幕的另一端滑入屏幕,它也不会fire@CodeUniquely我为Clarity编辑了这个问题你是从屏幕上开始的(所以你没有开始)-为了获得移动,你需要一个开始,为了得到一个结束,你还需要一个开始。当IOS“感觉”你将手指放在玻璃上或屏幕上时会检测到启动,但当你滑动手指时不会检测到启动(即使你是从屏幕上启动的)。有没有办法解决这个问题?可能是通过Cordova插件(iOS)?真的很有意义-如果你实际上没有触摸屏幕的触摸屏部分,那么设备怎么知道触发触摸启动事件?(当然,操作系统需要先获取开始事件,然后才能检测到结束事件)如果我从屏幕的另一端滑入屏幕,它也不会fire@CodeUniquely我为Clarity编辑了这个问题你是从屏幕上开始的(所以你没有开始)-为了获得移动,你需要一个开始,为了得到一个结束,你还需要一个开始。当IOS“感觉”你将手指放在玻璃上或屏幕上时会检测到启动,但当你滑动手指时不会检测到启动(即使你是从屏幕上启动的)。有没有办法解决这个问题?可能是通过Cordova插件(iOS)实现的?
this.divs = document.querySelectorAll(this.selector);
if(this.debug_level > 1) console.log("btn.length:"+this.divs.length + " for selector:"+this.selector);
    for(var i = 0; i<this.divs.length; i++) {
       this.divs[i].addEventListener("touchstart", this.bodyTouchStart);
       this.divs[i].addEventListener("touchmove", this.bodyTouchMove);
       this.divs[i].addEventListener("touchend", this.bodyTouchEnd);
    }

bodyTouchStart: function (e) {
    try {
         //alert("touchstart");
         var name = e.touches[0].identifier;
         if(this.debug_level > 1) console.log(e.touches[0]);
         pager.makeTouchDist(name);

         pager.touchdist[name].touchdistX = 0;
         pager.touchdist[name].touchdistY= 0;
         pager.touchdist[name].touchstartX= e.touches[0].screenX;
         pager.touchdist[name].touchstartY= e.touches[0].screenY;
         pager.touchdist[name].touchendX= e.touches[0].screenX;
         pager.touchdist[name].touchendY=e.touches[0].screenY;
    } catch(e) {
         if(this.debug_level > 0) console.log("pager:bodyTouchStart"+e.message);
    }
},
bodyTouchMove: function (e) {
     try {
         for(var i = 0; i<e.targetTouches.length; i++) {
             var touch = e.targetTouches[i];
             var name = touch.identifier;
             pager.touchdist[name].setTouchEndX(touch.pageX);
             pager.touchdist[name].setTouchEndY(touch.pageY);
          }
          if(pager.touchdist[name].touchdistX < -1*pager.threshold && pager.countState < pager.count - 1) {
          $("body").trigger("slideStart");
              pager.divs[0].style.marginLeft = pager.lastCompleteState + pager.touchdist[name].touchdistX + "px";
          } else if(pager.touchdist[name].touchdistX > pager.threshold && pager.countState > 0) {
              $("body").trigger("slideStart");
              pager.divs[0].style.marginLeft = pager.lastCompleteState + pager.touchdist[name].touchdistX + "px";
          }
     } catch(e) {
          if(this.debug_level > 0) console.log("pager:bodyTouchMove: "+e.message);
     }
},