Skip to content

Instantly share code, notes, and snippets.

@SashaKolbasov
Last active April 11, 2016 18:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save SashaKolbasov/e787690d9c87a896c2783a028c268045 to your computer and use it in GitHub Desktop.
Save SashaKolbasov/e787690d9c87a896c2783a028c268045 to your computer and use it in GitHub Desktop.
Cross-browser events on JavaScript.
var eventsObj = {
addEvent: function (el, type, fn) {
if (typeof addEventListener !== 'undefined') {
el.addEventListener(type, fn, false);
} else if (typeof attachEvent !== 'undefined') {
el.attachEvent('on' + type, fn);
} else {
el['on' + type] = fn;
}
},
removeEvent: function (el, type, fn) {
if (typeof removeEventListener !== 'undefined') {
el.removeEventListener(type, fn, false);
} else if (typeof detachEvent !== 'undefined') {
el.detachEvent('on' + type, fn);
} else {
el['on' + type] = null;
}
},
getTarget: function (event) {
if (typeof event.target !== 'undefined') {
return event.target;
} else {
return event.srcElement;
}
},
preventDefault: function (event) {
if (typeof event.preventDefault !== 'undefined') {
event.preventDefault();
} else {
event.returnValue = false;
}
}
};
(function () {
var button = document.getElementsById('button');
var changeColor = function (e) {
eventsObj.preventDefault(e);
var elem = eventsObj.getTarget(e);
document.body.className = 'night';
};
eventsObj.addEvent(button, 'click', changeColor);
eventsObj.removeEvent(button, 'click', changeColor);
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment