var hasTouch = 'ontouchend' in window, eventTimer; var moveDirection = 'undefined', startX, startY, deltaX, deltaY, mouseDown = false function addTouchEvents(element){ if (hasTouch) { element.addEventListener("touchstart", touch2Mouse, true); element.addEventListener("touchmove", touch2Mouse, true); element.addEventListener("touchend", touch2Mouse, true); } } function touch2Mouse(e) { var theTouch = e.changedTouches[0]; var mouseEv; switch(e.type) { case "touchstart": mouseEv="mousedown"; break; case "touchend": mouseEv="mouseup"; break; case "touchmove": mouseEv="mousemove"; break; default: return; } if (mouseEv == "mousedown") { eventTimer = (new Date()).getTime(); startX = theTouch.clientX; startY = theTouch.clientY; mouseDown = true; } if (mouseEv == "mouseup") { if ((new Date()).getTime() - eventTimer <= 500) { mouseEv = "click"; } else if ((new Date()).getTime() - eventTimer > 1000) { mouseEv = "longclick"; } eventTimer = 0; mouseDown = false; } if (mouseEv == "mousemove") { if (mouseDown) { deltaX = theTouch.clientX - startX; deltaY = theTouch.clientY - startY; moveDirection = deltaX > deltaY ? 'horizontal' : 'vertical'; } } var mouseEvent = document.createEvent("MouseEvent"); mouseEvent.initMouseEvent(mouseEv, true, true, window, 1, theTouch.screenX, theTouch.screenY, theTouch.clientX, theTouch.clientY, false, false, false, false, 0, null); theTouch.target.dispatchEvent(mouseEvent); e.preventDefault(); } /* To add touch support for element need create listeners for component dom element if (hasTouch) { element.addEventListener("touchstart", touch2Mouse, true); element.addEventListener("touchmove", touch2Mouse, true); element.addEventListener("touchend", touch2Mouse, true); } */