JSFiddle - React, Tailwind, and code Playground

by ariehg

JavaScript

!function(){

    var fireEvent  = (function(){
        if ('dispatchEvent' in document){
            return function(type){
                var ev = document.createEvent('UIEvents')
                         .initUIEvent(type,false,true,window,1);
                this.element.dispatchEvent(ev);

                return this;
            };    
        }else{
            return function(type){
                var i, fn, stack = this.$events[type];

                if (!stack) return;

                for (i=0; fn = stack[i++]; i) fn();

                return this;
            }    
        }    
    })();

    var addEvent = (function(){
        if ('addEventListener' in document){
            return function(type,fn){
                this.element.addEventListener(type,fn,false);
                return this;
            };    
        }else{
            return function(type,fn){
                if (!this.$events[type]) this.$events[type] = [fn];
                else this.$events[type].push(fn);

                return this;
            }    
        }
    })();

    var IEvents = this.IEvents = function(){
        this.addEvent = addEvent;
        this.fireEvent = fireEvent;
        this.$events = {};
    };
    
}.apply(this);  

var obj = {
    element : document.createElement('div')  
}
    
IEvents.apply(obj);

obj.addEvent('bla',function(){
    console.log('bla');
});

document.body.appendChild(obj.element);

obj.fireEvent('bla');