Requires

Provides

Contains the Event Class, to make the event object cross-browser.

License:
MIT-style license.
  1. 18
  2. 19
  3. 20
  4. 21
  5. 22
  6. 23
  7. 24
  8. 25
  9. 26
  10. 27
  11. 28
  12. 29
  13. 30
  14. 31
  15. 32
  16. 33
  17. 34
  18. 35
  19. 36
  20. 37
  21. 38
  22. 39
  23. 40
  24. 41
  25. 42
  26. 43
  27. 44
  28. 45
  29. 46
  30. 47
  31. 48
  32. 49
  33. 50
  34. 51
  35. 52
  36. 53
  37. 54
  38. 55
  39. 56
  40. 57
  41. 58
  42. 59
  43. 60
  44. 61
  45. 62
  46. 63
  47. 64
  48. 65
  49. 66
  50. 67
  51. 68
  52. 69
  53. 70
  54. 71
  55. 72
  56. 73
  57. 74
  58. 75
  59. 76
  60. 77
  61. 78
  62. 79
  63. 80
  64. 81
  65. 82
  66. 83
  67. 84
  68. 85
  69. 86
  70. 87
  71. 88
  72. 89
  73. 90
  74. 91
  75. 92
  76. 93
  77. 94
  78. 95
  79. 96
  80. 97
  81. 98
  82. 99
  83. 100
  84. 101
  85. 102
  86. 103
  87. 104
  88. 105
  89. 106
  90. 107
  91. 108
  92. 109
var Event = new Type('Event', function(event, win){ if (!win) win = window; var doc = win.document; event = event || win.event; if (event.$extended) return event; this.$extended = true; var type = event.type, target = event.target || event.srcElement, page = {}, client = {}; while (target && target.nodeType == 3) target = target.parentNode; if (type.indexOf('key') != -1){ var code = event.which || event.keyCode; var key = Object.keyOf(Event.Keys, code); if (type == 'keydown'){ var fKey = code - 111; if (fKey > 0 && fKey < 13) key = 'f' + fKey; } if (!key) key = String.fromCharCode(code).toLowerCase(); } else if ((/click|mouse|menu/i).test(type)){ doc = (!doc.compatMode || doc.compatMode == 'CSS1Compat') ? doc.html : doc.body; page = { x: (event.pageX != null) ? event.pageX : event.clientX + doc.scrollLeft, y: (event.pageY != null) ? event.pageY : event.clientY + doc.scrollTop }; client = { x: (event.pageX != null) ? event.pageX - win.pageXOffset : event.clientX, y: (event.pageY != null) ? event.pageY - win.pageYOffset : event.clientY }; if ((/DOMMouseScroll|mousewheel/).test(type)){ var wheel = (event.wheelDelta) ? event.wheelDelta / 120 : -(event.detail || 0) / 3; } var rightClick = (event.which == 3) || (event.button == 2), related = null; if ((/over|out/).test(type)){ related = event.relatedTarget || event[(type == 'mouseover' ? 'from' : 'to') + 'Element']; var testRelated = function(){ while (related && related.nodeType == 3) related = related.parentNode; return true; }; var hasRelated = (Browser.firefox2) ? testRelated.attempt() : testRelated(); related = (hasRelated) ? related : null; } } else if ((/gesture|touch/i).test(type)){ this.rotation = event.rotation; this.scale = event.scale; this.targetTouches = event.targetTouches; this.changedTouches = event.changedTouches; var touches = this.touches = event.touches; if (touches && touches[0]){ var touch = touches[0]; page = {x: touch.pageX, y: touch.pageY}; client = {x: touch.clientX, y: touch.clientY}; } } return Object.append(this, { event: event, type: type, page: page, client: client, rightClick: rightClick, wheel: wheel, relatedTarget: document.id(related), target: document.id(target), code: code, key: key, shift: event.shiftKey, control: event.ctrlKey, alt: event.altKey, meta: event.metaKey }); }); Event.Keys = { 'enter': 13, 'up': 38, 'down': 40, 'left': 37, 'right': 39, 'esc': 27, 'space': 32, 'backspace': 8, 'tab': 9, 'delete': 46 };

<1.2compat>

  1. 113
Event.Keys = new Hash(Event.Keys);

</1.2compat>

  1. 117
  2. 118
  3. 119
  4. 120
  5. 121
  6. 122
  7. 123
  8. 124
  9. 125
  10. 126
  11. 127
  12. 128
  13. 129
  14. 130
  15. 131
  16. 132
  17. 133
  18. 134
  19. 135
Event.implement({ stop: function(){ return this.stopPropagation().preventDefault(); }, stopPropagation: function(){ if (this.event.stopPropagation) this.event.stopPropagation(); else this.event.cancelBubble = true; return this; }, preventDefault: function(){ if (this.event.preventDefault) this.event.preventDefault(); else this.event.returnValue = false; return this; } });