Last active
December 14, 2015 18:09
-
-
Save beaucharman/5127116 to your computer and use it in GitHub Desktop.
event{} | JavaScript object | Cross Browser Event Handling
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Event | |
* ------------------------------------------------------------------------ | |
* event{} | |
* @version 1.0 | April 23rd 2013 | |
* @author Beau Charman | @beaucharman | http://beaucharman.me | |
* @link https://gist.github.com/beaucharman/5127116 | |
* @method add | |
* @method remove | |
* @method getTarget | |
* @method preventDefault | |
* | |
* Cross Browser Event Handling. | |
* ------------------------------------------------------------------------ */ | |
var event = { | |
/** | |
* Add | |
* ------------------------------------------------------------------------ | |
* event.add() | |
* @param {DOM node} el | the target element | |
* @param {string} type | the type of event to list for | |
* @param {function} fn | the callback fucntion | |
* ------------------------------------------------------------------------ */ | |
add : function(el, type, fn) { | |
if ((el instanceof Array) || (el instanceof NodeList)) { | |
for (var ii = 0, ln = el.length; ii < ln; ii++) { | |
if (typeof addEventListener !== "undefined") { | |
el[ii].addEventListener(type, fn, false); | |
} else if (typeof attachEvent !== "undefined") { | |
el[ii].attachEvent("on" + type, fn); | |
} else { | |
el[ii]["on" + type] = fn; | |
} | |
} | |
} else { | |
if (typeof addEventListener !== "undefined") { | |
el.addEventListener(type, fn, false); | |
} else if (typeof attachEvent !== "undefined") { | |
el.attachEvent("on" + type, fn); | |
} else { | |
el["on" + type] = fn; | |
} | |
} | |
}, | |
/** | |
* Remove | |
* ------------------------------------------------------------------------ | |
* event.remove() | |
* @param {DOM node} el | the target element | |
* @param {string} type | the type of event to list for | |
* @param {function} fn | the callback fucntion | |
* ------------------------------------------------------------------------ */ | |
remove : function(el, type, fn) { | |
if ((el instanceof Array) || (el instanceof NodeList)) { | |
for (var ii = 0, ln = el.length; ii < ln; ii++) { | |
if (typeof removeEventListener !== "undefined") { | |
el[ii].removeEventListener(type, fn, false); | |
} else if (typeof detachEvent !== "undefined") { | |
el[ii].detachEvent("on" + type, fn); | |
} else { | |
el[ii]["on" + type] = null; | |
} | |
} | |
} else { | |
if (typeof removeEventListener !== "undefined") { | |
el.removeEventListener(type, fn, false); | |
} else if (typeof detachEvent !== "undefined") { | |
el.detachEvent("on" + type, fn); | |
} else { | |
el["on" + type] = null; | |
} | |
} | |
}, | |
/** Get Target | |
* ------------------------------------------------------------------------ | |
* event.getTarget() | |
* @param {event} e | the event instance | |
* ------------------------------------------------------------------------ */ | |
getTarget : function(e) { | |
if (typeof e.target !== "undefined") { | |
return e.target; | |
} else { | |
return e.srcElement; | |
} | |
}, | |
/** | |
* Prevent Default | |
* ------------------------------------------------------------------------ | |
* event.preventDefault() | |
* @param {event} e | the event instance | |
* ------------------------------------------------------------------------ */ | |
preventDefault : function(e) { | |
if(typeof e.preventDefault !== "undefined") { | |
e.preventDefault(); | |
} else { | |
e.returnValue = false; | |
} | |
} | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment