Spaces:
Running
Running
// Some browsers have a non-functional EventTarget, so we write our own version that works everywhere. | |
class EventTargetShim { | |
constructor () { | |
this._events = {}; | |
} | |
addEventListener (event, handler) { | |
if (!this._events[event]) { | |
this._events[event] = []; | |
} | |
this._events[event].push(handler); | |
} | |
removeEventListener (event, handler) { | |
const handlers = this._events[event]; | |
if (handlers) { | |
this._events[event] = handlers.filter(i => i !== handler); | |
} | |
} | |
dispatchEvent (event) { | |
const handlers = this._events[event.type]; | |
if (handlers) { | |
for (const fn of handlers) { | |
fn(event); | |
} | |
} | |
} | |
} | |
export default EventTargetShim; | |