28fc3b409f
- 引入 ScriptManager、TimerManager 和 EventManager 统一管理资源 - 路由配置支持默认重定向路径 '/' - 移除旧版 scriptLoader 与 routeUtils,使用新的模块化加载机制 - 增加路由生命周期控制,自动清理定时器和事件监听器 - 改进点击代理逻辑,增强按钮激活状态切换 - 页面切换时卸载旧脚本及资源,防止内存泄漏 - 修复初始化日志冗余问题,提升代码可维护性
32 lines
885 B
JavaScript
32 lines
885 B
JavaScript
export class EventManager {
|
|
constructor() {
|
|
this.listeners = [];
|
|
}
|
|
|
|
add(ele, type, handler, options) {
|
|
ele.addEventListener(type, handler, options);
|
|
this.listeners.push({ ele, type, handler, options });
|
|
}
|
|
|
|
remove(ele, type, handler, options) {
|
|
ele.removeEventListener(type, handler, options);
|
|
this.listeners = this.listeners.filter(
|
|
(listener) =>
|
|
listener.ele !== ele ||
|
|
listener.type !== type ||
|
|
listener.handler !== handler ||
|
|
listener.options !== options
|
|
);
|
|
}
|
|
|
|
removeAll() {
|
|
this.listeners.forEach((listener) => {
|
|
listener.ele.removeEventListener(
|
|
listener.type,
|
|
listener.handler,
|
|
listener.options
|
|
);
|
|
});
|
|
this.listeners = [];
|
|
}
|
|
} |