Files
testing-tool/sidepanel/js/index.js
T
雨霖铃 4a76561a85 feat(timestamp): 重构时间戳模块并优化时区处理
- 将时区列表提取到独立常量文件 `timezone.js` 中,便于维护和扩展
- 重构时间戳显示逻辑,将初始化功能从事件处理器中分离
- 引入 timerManager、eventManager 和 scriptManager 进行资源统一管理
- 更新 DOM 操作方式,使用 window.eventManager 替代直接 addEventListener
- 改进时间戳更新函数,支持传入元素引用以提高灵活性
- 在路由加载脚本时增加调试日志,方便追踪组件加载过程
- 移除冗余的 DOM 工具函数(如 getElementById),统一使用原生方法
- 修复计时器清理问题,确保通过 timerManager 正确清除定时任务
- 初始化时间戳和日期输入框默认值,提升用户体验
2025-12-10 22:16:10 +08:00

48 lines
1.2 KiB
JavaScript

import { ScriptManager } from '../utils/scriptManager.js';
import { TimerManager } from '../utils/timerManager.js';
import { EventManager } from '../utils/eventManager.js';
import { Router } from '../modules/Router.js';
const config = {
routerViewId: 'app',
stackPages: false,
routes: [
{
path: '/',
name: 'redirect',
html: 'pages/timestamp.html',
},
{
path: '/home',
name: 'timestamp',
html: 'pages/timestamp.html',
script: '../dist/timestamp.js',
},
{
path: '/todo',
name: 'todo',
html: 'pages/todolist.html',
},
],
};
// 注入脚本管理器
window.scriptManager = new ScriptManager();
// 注入定时器管理器
window.timerManager = new TimerManager();
// 注入事件管理器
window.eventManager = new EventManager();
const router = new Router();
router.init(config);
// click delegation
document.addEventListener('click', (e) => {
const btn = e.target.closest('[data-route]');
if (!btn) return;
const p = btn.getAttribute('data-route');
location.hash = p;
// update active styling
document.querySelectorAll('[data-route]').forEach((b) => b.classList.toggle('active', b === btn));
});