在追求极致阅读体验的路上,细节决定成败。最近我对博客进行了一系列深度优化,解决了困扰已久的 SPA(单页应用)下评论区不加载、暗色模式不跟随、以及大屏显示效果不佳等问题。
1. 攻克 SPA 下的“评论区消失术”
由于博客采用了 Swup.js 来实现无刷新页面切换(SPA 风格),常规的 Waline 初始化脚本在页面跳转后会失效。
解决方案:
- 全局生命周期管理:将 Waline 的初始化逻辑
initWaline提升至extended_head.html中,使其成为全局可调用的持久化函数。 - 挂钩 Swup 钩子:利用 Swup 的
content:replace事件,在每次页面内容替换后强制重新触发 Waline 初始化。 - 优雅降级与清理:在重绘前增加了
destroy()检查和try-catch保护,防止因 DOM 节点提前移除导致的 JavaScript 报错。
2. 完美的暗色模式适配
修复了 Waline 编辑器在切换到暗色主题后依然“一片惨白”的视觉 Bug。
- CSS 变量同步:手动将 Waline 的内部变量(如
--waline-bg-color)映射到 GitHub 主题的颜色体系中。 - 强制背景覆盖:通过
!important规则确保在data-color-mode="dark"激活时,评论框背景能完美融入深色背景。 - 动态监听:配置 Waline 的
dark属性指向html[data-color-mode="dark"]选择器,实现主题的毫秒级同步切换。
3. “宽屏模式”正式上线
针对现代大尺寸显示器,增加了宽屏/窄屏切换功能。
- 一键展开:在 Header 顶部增加了全新的布局切换按钮。
- 全方位拉伸:开启宽屏模式后,不仅文章主体容器(
container-lg)会扩展至 95% 宽度,下方的 Waline 评论区也会同步拉伸,提供更开阔的阅读和讨论视野。 - 状态持久化:使用
localStorage记录用户的偏好,即使刷新页面或在 SPA 间跳转,布局状态也能保持一致。
4. 脚注渲染支持 (^[…])
为了方便引用和补充说明,现在支持标准的行内脚注语法。
- 语法:
^[这是脚注内容] - 自动处理:通过自定义脚本,系统会自动识别文章中的脚注标记,将其转换为上标数字,并在文末自动生成带有“回跳”链接的脚注列表。
5. 其他稳定性修复
- Service Worker 优化:修复了 SW 尝试缓存
chrome-extension协议导致的控制台报错。 - 图片 404 修复:将文章图片路径改为绝对路径,确保在 SPA 复杂的路由跳转下图片依然能准确加载。
- MathJax 健壮性:增强了公式渲染脚本的判断逻辑,解决了跳转时的
TypeError异常。
希望这些改进能让大家的阅读体验更加丝滑!如有任何建议,欢迎在(终于修好的)评论区留言。