Files
argon-theme/.kiro/specs/pjax-lazyload-fix/tasks.md
nanhaoluo 0616150dae feat: 实现 PJAX 内联脚本执行器
- 添加 executeScript() 函数:
  - 创建新的 script 元素并复制内容
  - 复制所有属性(包括 async、defer)
  - 添加错误捕获和日志记录
  - 满足需求 4.4, 4.5
- 添加 executeInlineScripts() 函数:
  - 提取新页面中的所有 script 标签
  - 区分内联脚本和外部脚本
  - 按 DOM 顺序执行脚本
  - 错误隔离机制(单个脚本失败不影响其他脚本)
  - 返回执行结果统计
  - 满足需求 4.1-4.4
- 在 pjax:complete 事件中调用:
  - 在其他模块初始化之前执行
  - 添加错误处理
  - 满足需求 4.1-4.5

满足需求:4.1-4.5(内联脚本执行)
2026-01-25 00:47:28 +08:00

135 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 实施计划PJAX、Lazyload 和 Mermaid 全面优化
## 概述
本实施计划整合了 PJAX 页面无刷新跳转、Lazyload 图片懒加载和 Mermaid 图表渲染的全面优化。
**实施策略:**
- 向后兼容:保持现有 API 和配置不变
- 性能优先:优化渲染性能,减少卡顿
- 用户体验:增强交互功能,提升视觉效果
## 任务
### 阶段 1: PJAX 和 Lazyload 核心修复
- [x] 1. 创建统一的资源清理管理器
- 封装 `cleanupPjaxResources()` 函数
- 清理 Lazyload Observer、Zoomify、Tippy、Mermaid 实例
- 清理动态 style 和 script 标签
- _需求1.1-1.4, 2.3, 6.1_
- [x] 2. 优化 Lazyload 生命周期
- [x] 2.1 添加 Observer 存在性检查 _需求2.1, 2.2_
- [x] 2.2 优化图片加载函数(使用 requestAnimationFrame _需求3.1-3.3_
- [x] 2.3 实现滚动监听降级方案 _需求2.4, 8.2_
- [x] 3. 重构 PJAX 事件处理器
- [x] 3.1 优化 `pjax:beforeReplace` 事件 _需求1.1-1.4_
- [x] 3.2 优化 `pjax:complete` 事件(消除重复初始化) _需求1.5, 1.6, 4.1-4.4_
- [x] 3.3 优化 `pjax:end` 事件 _需求1.7_
- [x] 4. 实现内联脚本执行器
- 提取并执行新页面的 script 标签
- 添加错误隔离机制
- _需求4.1-4.5_
### 阶段 2: Mermaid 显示效果优化
- [~] 5. 优化 Mermaid 工具栏
- [ ] 5.1 实现工具栏自动隐藏 _需求11.1, 11.2_
- [ ] 5.2 优化工具栏样式(半透明背景) _需求11.3-11.5_
- [ ] 5.3 添加按钮提示tooltip _需求20.2_
- [~] 6. 增强 Mermaid 缩放功能
- [ ] 6.1 实现以鼠标为中心的缩放 _需求12.1_
- [ ] 6.2 优化缩放动画CSS transform + transition _需求12.2, 12.3_
- [ ] 6.3 实现智能缩放(双击) _需求12.5_
- [ ] 6.4 优化缩放按钮状态 _需求12.4, 20.3_
- [~] 7. 优化 Mermaid 拖拽功能
- [ ] 7.1 改进拖拽响应requestAnimationFrame _需求13.3_
- [ ] 7.2 优化拖拽视觉反馈 _需求13.1, 13.2, 13.4_
- [ ] 7.3 智能启用拖拽 _需求13.5_
### 阶段 3: Mermaid 高级功能
- [ ] 8. 实现 Mermaid 全屏模式
- [ ] 8.1 添加全屏按钮 _需求14.1_
- [ ] 8.2 全屏模式功能保持 _需求14.2, 14.3_
- [ ] 8.3 全屏模式退出ESC 键) _需求14.4, 14.5_
- [ ] 9. 实现 Mermaid 导出功能
- [ ] 9.1 添加导出按钮和菜单 _需求15.1_
- [ ] 9.2 实现 PNG 导出 _需求15.2, 15.4_
- [ ] 9.3 实现 SVG 导出 _需求15.3, 15.4_
- [ ] 9.4 添加导出错误处理 _需求15.5_
- [ ] 10. 优化 Mermaid 响应式设计
- [ ] 10.1 移动端工具栏适配 _需求16.1_
- [ ] 10.2 实现触摸手势支持 _需求16.2-16.4_
- [ ] 10.3 横屏模式优化 _需求16.5_
### 阶段 4: Mermaid 主题和性能优化
- [~] 11. 优化 Mermaid 主题同步
- [ ] 11.1 实现主题自动切换 _需求17.1, 17.2_
- [ ] 11.2 保持图表状态 _需求17.3_
- [ ] 11.3 添加主题切换动画 _需求17.4, 17.5_
- [~] 12. 优化 Mermaid 渲染性能
- [ ] 12.1 实现批量渲染 _需求18.1_
- [ ] 12.2 添加加载动画 _需求18.2, 18.3_
- [ ] 12.3 实现延迟渲染 _需求18.4_
- [ ] 12.4 优化错误处理 _需求18.5_
- [~] 13. 优化 Mermaid 错误提示
- [ ] 13.1 设计友好的错误容器 _需求19.1, 19.2, 19.4_
- [ ] 13.2 添加原始代码查看 _需求19.3_
- [ ] 13.3 夜间模式适配 _需求19.5_
### 阶段 5: 测试和优化
- [ ] 14. 单元测试
- [ ] 14.1 PJAX 资源清理测试
- [ ] 14.2 Lazyload 功能测试
- [ ] 14.3 Mermaid 渲染测试
- [ ] 15. 集成测试
- [ ] 15.1 PJAX 完整流程测试
- [ ] 15.2 Mermaid 交互测试
- [ ] 15.3 响应式测试
- [ ] 16. 性能测试
- [ ] 16.1 内存泄漏检测
- [ ] 16.2 渲染性能测试
- [ ] 16.3 交互性能测试
- [ ] 17. 浏览器兼容性测试
- 测试主流浏览器和移动端浏览器
- 测试降级方案
- [ ] 18. 文档和代码审查
- 更新代码注释和 JSDoc
- 代码风格检查
## 实施优先级
**P0 (必须完成):**
- 任务 1-4: PJAX 和 Lazyload 核心修复
- 任务 5: Mermaid 工具栏优化
- 任务 11: Mermaid 主题同步
- 任务 12: Mermaid 性能优化
**P1 (重要):**
- 任务 6-7: Mermaid 缩放和拖拽优化
- 任务 10: Mermaid 响应式设计
- 任务 13: Mermaid 错误提示优化
**P2 (可选):**
- 任务 8: Mermaid 全屏模式
- 任务 9: Mermaid 导出功能
**P3 (增强):**
- 任务 14-18: 测试和文档