touch事件如何判断是否离开

RT,例如,在某些情况下,touchmove中的时候,直接移出屏幕或其他情况,会导致触发不了touchend事件,此问题如何解决

阅读 3.9k
1 个回答

touchmove时不让其移出可视窗口,或者touchend事件加在document上

function touch(id){
            var obj = document.getElementById(id); 
            obj.addEventListener('touchstart', function(event) {     
            if (event.targetTouches.length == 1) { 
            var touch = event.targetTouches[0]; 
            var disX=touch.pageX-obj.offsetLeft; 
            var disY=touch.pageY-obj.offsetTop;
            var W = document.documentElement.clientWidth-obj.offsetWidth;
            var H = document.documentElement.clientHeight-obj.offsetHeight;
            obj.addEventListener('touchmove',move);  
            function move(event){    
                event.preventDefault();
                    var touch2=event.targetTouches[0];
                    var l=touch2.pageX-disX;
                    var t=touch2.pageY-disY;
                    if(l<0){
                        l=0;
                    };
                    if(l>W){
                        l=W;
                    };
                    if(t<0){
                        t=0;
                    };
                    if(t>H){
                        t=H;
                    };
                    obj.style.left=l+'px';
                    obj.style.top=t+'px';
         
            };
              obj.addEventListener('touchend',chend);
              function chend(event){
                obj.removeEventListener('touchmove',move);
                obj.removeEventListener('touchend',chend);
              };
        }; 
        }, false);
    };
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题