UNPKG

mustard-app

Version:

个人前端微应用建设中。。。

44 lines (39 loc) 1.58 kB
export type IEventLisParameters = Parameters<typeof addEventListener>; export type IEventLisReturn = ReturnType<typeof addEventListener>; type IType = IEventLisParameters[0]; type Ilistener = IEventLisParameters[1]; type Ioptions = IEventLisParameters[2]; export class ProxyEventListener { eventLis = new Map<IType, Map<Ilistener, Ioptions>>(); // 添加事件 addEventListener (type: IType, listener: Ilistener, options: Ioptions) { if(!this.eventLis.has(type)) { this.eventLis.set(type, new Map()); } const listeners = this.eventLis.get(type); listeners?.set(listener, options); return window.addEventListener(type, listener, options); } // 删除事件 removeEventListener (type: IType, listener: Ilistener, options: Ioptions) { if(!this.eventLis.has(type)) { this.eventLis.set(type, new Map()); } const listeners = this.eventLis.get(type); if(listeners?.get(listener) === options) { listeners?.delete(listener); } return window.removeEventListener(type, listener, options); } // 全部清除事件 clear () { Array.from(this.eventLis.keys()).forEach(key => { const listeners = this.eventLis.get(key); if(listeners instanceof Map) { Array.from(listeners.keys()).forEach(listener => { window.removeEventListener(key, listener, listeners.get(listener)); }); } }); } }