# 实现hash路由功能,避免刷新时返回到主页 ## 问题分析 当前系统使用简单的页面切换逻辑,通过隐藏/显示不同的内容区域来实现页面切换。这种方式的缺点是: 1. 刷新页面后会返回到主页 2. 无法通过URL直接访问特定页面 3. 无法在浏览器历史记录中保存页面状态 ## 解决方案 实现hash路由功能,将页面状态保存在URL的hash部分,例如: - http://localhost:8080/#dashboard - http://localhost:8080/#blacklists - http://localhost:8080/#query - http://localhost:8080/#config ## 实现步骤 ### 1. 修改handlePageSwitch函数 * 在页面切换时,更新URL的hash * 移除e.preventDefault(),允许默认的hash变化 ### 2. 添加hashchange事件监听器 * 监听window的hashchange事件 * 在hash变化时,根据hash值显示相应的内容 * 更新页面标题和活动菜单项 ### 3. 添加initHashRoute函数 * 在页面加载时调用 * 获取URL的hash值 * 如果没有hash值,默认设置为#dashboard * 根据hash值显示相应的内容 * 更新页面标题和活动菜单项 ### 4. 在页面加载时调用initHashRoute函数 * 确保在DOMContentLoaded事件中调用initHashRoute函数 ## 预期效果 * 页面切换时,URL的hash会相应更新 * 刷新页面后,会显示与URL hash对应的页面 * 默认情况下,http://localhost:8080会显示dashboard内容,URL变为http://localhost:8080/#dashboard * 可以通过URL直接访问特定页面 * 浏览器历史记录中会保存页面状态 ## 技术要点 * 使用window.location.hash获取和设置URL的hash值 * 使用window.addEventListener('hashchange', ...)监听hash变化 * 使用window.addEventListener('DOMContentLoaded', ...)在页面加载时初始化 * 确保在页面加载时检查hash值,如果没有则设置为#dashboard ## 实现时间 * 预计30分钟完成所有修改和测试 ## 风险评估 * 低风险:修改范围明确,不涉及核心功能 * 可回滚:所有修改均为前端修改,可通过恢复文件轻松回滚 ## 依赖关系 * 依赖现有的页面切换逻辑 * 依赖现有的CSS类和HTML结构 ## 测试策略 * 手动测试页面切换时URL hash的变化 * 测试刷新页面后是否显示正确的页面 * 测试直接访问带hash的URL是否显示正确的页面 * 测试默认情况下是否显示dashboard内容 ## 验收标准 * 页面切换时,URL的hash会相应更新 * 刷新页面后,会显示与URL hash对应的页面 * 默认情况下,http://localhost:8080会显示dashboard内容,URL变为http://localhost:8080/#dashboard * 可以通过URL直接访问特定页面 * 浏览器历史记录中会保存页面状态