1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- define(["./kernel", "../on", "../has", "../dom-geometry"], function(dojo, on, has, dom){
- // module:
- // dojo/_base/event
- if(on._fixEvent){
- var fixEvent = on._fixEvent;
- on._fixEvent = function(evt, se){
- // add some additional normalization for back-compat, this isn't in on.js because it is somewhat more expensive
- evt = fixEvent(evt, se);
- if(evt){
- dom.normalizeEvent(evt);
- }
- return evt;
- };
- }
-
- var ret = {
- // summary:
- // This module defines dojo DOM event API. Usually you should use dojo/on, and evt.stopPropagation() +
- // evt.preventDefault(), rather than this module.
- fix: function(/*Event*/ evt, /*DOMNode*/ sender){
- // summary:
- // normalizes properties on the event object including event
- // bubbling methods, keystroke normalization, and x/y positions
- // evt: Event
- // native event object
- // sender: DOMNode
- // node to treat as "currentTarget"
- if(on._fixEvent){
- return on._fixEvent(evt, sender);
- }
- return evt; // Event
- },
-
- stop: function(/*Event*/ evt){
- // summary:
- // prevents propagation and clobbers the default action of the
- // passed event
- // evt: Event
- // The event object. If omitted, window.event is used on IE.
- if(has("dom-addeventlistener") || (evt && evt.preventDefault)){
- evt.preventDefault();
- evt.stopPropagation();
- }else{
- evt = evt || window.event;
- evt.cancelBubble = true;
- on._preventDefault.call(evt);
- }
- }
- };
- if(has("extend-dojo")){
- dojo.fixEvent = ret.fix;
- dojo.stopEvent = ret.stop;
- }
- return ret;
- });
|