Skip to content

Instantly share code, notes, and snippets.

@stuartlynn
Created April 10, 2013 15:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save stuartlynn/5355651 to your computer and use it in GitHub Desktop.
Save stuartlynn/5355651 to your computer and use it in GitHub Desktop.
Proxy touch events
function touchHandler(event)
+ {
+ 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;
+ }
+
+ //initMouseEvent(type, canBubble, cancelable, view, clickCount,
+ // screenX, screenY, clientX, clientY, ctrlKey,
+ // altKey, shiftKey, metaKey, button, relatedTarget);
+ 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);
+
+ if (event.type=="touchend"){
+ var simulatedEvent = document.createEvent("MouseEvent");
+ simulatedEvent.initMouseEvent('click', true, true, window, 1,
+ first.screenX, first.screenY,
+ first.clientX, first.clientY, false,
+ false, false, false, 0
+ /*left*/
+ , null);
+ first.target.dispatchEvent(simulatedEvent);
+ }
+
+ event.preventDefault();
+
+ }
+
+
+ $(document).ready(function(){
+ $("body").bind('touchmove',
+ function(e){ e.preventDefault();
+ });
+
+ document.addEventListener("touchstart", touchHandler, true);
+ document.addEventListener("touchmove", touchHandler, true);
+ document.addEventListener("touchend", touchHandler, true);
+ document.addEventListener("touchcancel", touchHandler, true);
+ });
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment