Requires

Provides

Provides a custom swipe event for touch devices

License:
MIT-style license.
Authors:
Christopher Beloch (@C_BHole), Christoph Pojer (@cpojer), Ian Collins (@3n)
  1. 20
  2. 21
  3. 22
  4. 23
  5. 24
  6. 25
  7. 26
  8. 27
  9. 28
  10. 29
  11. 30
  12. 31
  13. 32
  14. 33
  15. 34
  16. 35
  17. 36
  18. 37
  19. 38
  20. 39
  21. 40
  22. 41
  23. 42
  24. 43
  25. 44
  26. 45
  27. 46
  28. 47
  29. 48
  30. 49
  31. 50
  32. 51
  33. 52
  34. 53
  35. 54
  36. 55
  37. 56
  38. 57
  39. 58
  40. 59
  41. 60
  42. 61
  43. 62
  44. 63
  45. 64
  46. 65
  47. 66
  48. 67
  49. 68
  50. 69
  51. 70
  52. 71
  53. 72
  54. 73
  55. 74
  56. 75
  57. 76
  58. 77
  59. 78
  60. 79
  61. 80
  62. 81
  63. 82
  64. 83
  65. 84
  66. 85
  67. 86
  68. 87
  69. 88
  70. 89
  71. 90
  72. 91
  73. 92
  74. 93
  75. 94
  76. 95
  77. 96
(function(){ var name = 'swipe', distanceKey = name + ':distance', cancelKey = name + ':cancelVertical', dflt = 50; var start = {}, disabled, active; var clean = function(){ active = false; }; var events = { touchstart: function(event){ if (event.touches.length > 1) return; var touch = event.touches[0]; active = true; start = {x: touch.pageX, y: touch.pageY}; }, touchmove: function(event){ event.preventDefault(); if (disabled || !active) return; var touch = event.changedTouches[0]; var end = {x: touch.pageX, y: touch.pageY}; if (this.retrieve(cancelKey) && Math.abs(start.y - end.y) > Math.abs(start.x - end.x)){ active = false; return; } var distance = this.retrieve(distanceKey, dflt), diff = end.x - start.x, isLeftSwipe = diff < -distance, isRightSwipe = diff > distance; if (!isRightSwipe && !isLeftSwipe) return; active = false; event.direction = (isLeftSwipe ? 'left' : 'right'); event.start = start; event.end = end; this.fireEvent(name, event); }, touchend: clean, touchcancel: clean }; Element.defineCustomEvent(name, { onSetup: function(){ this.addEvents(events); }, onTeardown: function(){ this.removeEvents(events); }, onEnable: function(){ disabled = false; }, onDisable: function(){ disabled = true; clean(); } }); })();