Template:UFMG Brazil/Event.js
From 2014.igem.org
/**
- Unifies event handling across browsers
- - Allows registering and unregistering of event handlers
- - Injects event object and involved DOM element to listener
- @author Mark Rolich <mark.rolich@gmail.com>
- /
var Event = function () {
"use strict"; this.attach = function (evtName, element, listener, capture) { var evt = , useCapture = (capture === undefined) ? true : capture, handler = null;
if (window.addEventListener === undefined) { evt = 'on' + evtName; handler = function (evt, listener) { element.attachEvent(evt, listener); return listener; }; } else { evt = evtName; handler = function (evt, listener, useCapture) { element.addEventListener(evt, listener, useCapture); return listener; }; }
return handler.apply(element, [evt, function (ev) { var e = ev || event, src = e.srcElement || e.target;
listener(e, src); }, useCapture]); };
this.detach = function (evtName, element, listener, capture) { var evt = , useCapture = (capture === undefined) ? true : capture;
if (window.removeEventListener === undefined) { evt = 'on' + evtName; element.detachEvent(evt, listener); } else { evt = evtName; element.removeEventListener(evt, listener, useCapture); } };
this.stop = function (evt) { evt.cancelBubble = true;
if (evt.stopPropagation) { evt.stopPropagation(); } };
this.prevent = function (evt) { if (evt.preventDefault) { evt.preventDefault(); } else { evt.returnValue = false; } };
};