SashaKolbasov
4/11/2016 - 6:22 PM

Cross-browser events on JavaScript.

Cross-browser events on JavaScript.

(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);
})();
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;
        }
    }
};