나는 현재이 있습니다취급 터치 기반 이벤트 내 터치 이벤트에 대한
if('ontouchstart' in document.body) {
usevkeys = true;
canvas.addEventListener("touchstart",function(e) {evt.call(this,e);},false);
canvas.addEventListener("touchend",function(e) {evt.call(this,e);},false);
canvas.addEventListener("touchmove",function(e) {evt.call(this,e);},false);
}
else {
canvas.addEventListener("mousemove",function(e) {evt.call(this,e);},false);
canvas.addEventListener("click",function(e) {evt.call(this,e);},false);
}
이 내 노트북에 잘 작동하고, 내 전화. 그러나 나는 이것이 터치 스크린과 일반 마우스를 모두 가지고있는 환경에서 어떻게 반응 할까? 마우스가 mousemove
이벤트를 트리거하는 것처럼 터치 이벤트를 트리거합니까?
제대로 작동하려면 어떻게해야합니까?
도움이 될지 모르겠지만 Modernizr은'if (('ontouchstart'in window) || window.DocumentTouch && document instanceof DocumentTouch) {'를 사용합니다. 그걸 좁히는 데 도움이 될지 궁금해? 귀하의 질문을 다시 읽으면서, 나는 응답/도움이되는지 잘 모르겠습니다. – Ian
'else {'와'}'를 제거하고 방금 남겨두면'mousemove'와'click' 이벤트가 항상 바인딩되어 있습니까? 그렇게하면 터치 이벤트가있는 경우 해당 이벤트가 바인딩되지만 일반 마우스 이벤트는 항상 바인딩됩니다. 터치 이벤트가 발생하면 마우스 이벤트가 발생합니다. 아니면 일부 이벤트가 겹 칩니 까? 'touchmove'와'mousemove' 이벤트와 같은? – Ian
터치 이벤트가 지원되지만 USB 마우스가 사용되는 경우 (터치 이벤트없이) 마우스 이벤트가 발생할 수 있음을 경험했습니다 (OS에 따라 다를 수 있음). 나는 항상 들어갔다. 터치 스타트가 처음으로 발사 될 때 마우스 이벤트 리스너를 모두 관찰하고 설정을 해제했다. 이것은 불필요한 이벤트 리스너를 저장하고 컨트롤을 제공한다. –