event.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. define(["./kernel", "../on", "../has", "../dom-geometry"], function(dojo, on, has, dom){
  2. // module:
  3. // dojo/_base/event
  4. if(on._fixEvent){
  5. var fixEvent = on._fixEvent;
  6. on._fixEvent = function(evt, se){
  7. // add some additional normalization for back-compat, this isn't in on.js because it is somewhat more expensive
  8. evt = fixEvent(evt, se);
  9. if(evt){
  10. dom.normalizeEvent(evt);
  11. }
  12. return evt;
  13. };
  14. }
  15. var ret = {
  16. // summary:
  17. // This module defines dojo DOM event API. Usually you should use dojo/on, and evt.stopPropagation() +
  18. // evt.preventDefault(), rather than this module.
  19. fix: function(/*Event*/ evt, /*DOMNode*/ sender){
  20. // summary:
  21. // normalizes properties on the event object including event
  22. // bubbling methods, keystroke normalization, and x/y positions
  23. // evt: Event
  24. // native event object
  25. // sender: DOMNode
  26. // node to treat as "currentTarget"
  27. if(on._fixEvent){
  28. return on._fixEvent(evt, sender);
  29. }
  30. return evt; // Event
  31. },
  32. stop: function(/*Event*/ evt){
  33. // summary:
  34. // prevents propagation and clobbers the default action of the
  35. // passed event
  36. // evt: Event
  37. // The event object. If omitted, window.event is used on IE.
  38. if(has("dom-addeventlistener") || (evt && evt.preventDefault)){
  39. evt.preventDefault();
  40. evt.stopPropagation();
  41. }else{
  42. evt = evt || window.event;
  43. evt.cancelBubble = true;
  44. on._preventDefault.call(evt);
  45. }
  46. }
  47. };
  48. if(has("extend-dojo")){
  49. dojo.fixEvent = ret.fix;
  50. dojo.stopEvent = ret.stop;
  51. }
  52. return ret;
  53. });