function touchHandler(event) { event.stopPropagation(); var touches = event.changedTouches, first = touches[0], type = ""; switch (event.type) { case "touchstart": type = "mousedown"; break; case "touchmove": type = "mousemove"; break; case "touchend": type = "mouseup"; break; default: return; } var simulatedEvent = new MouseEvent(type, { "altKey": false, "button": 0, "buttons": 0, "clientX": first.clientX, "clientY": first.clientY, "ctrlKey": false, "metaKey": false, "relatedTarget": first, "screenX": first.screenX, "screenY": first.screenY, "shiftKey": false }); // var simulatedEvent = document.createEvent("MouseEvent"); // simulatedEvent.initMouseEvent(type, true, true, window, 1, // first.screenX, first.screenY, // first.clientX, first.clientY, false, // false, false, false, 0/*left*/, null); first.target.dispatchEvent(simulatedEvent); } function init() { document.addEventListener("touchstart", touchHandler, true); document.addEventListener("touchmove", touchHandler, true); document.addEventListener("touchend", touchHandler, true); document.addEventListener("touchcancel", touchHandler, true); }