localstorage 可实时保存文章草稿并恢复,需监听 input 事件加防抖、用唯一 key 区分草稿、空时恢复、提交后清理,并处理兼容性与降级。

LocalStorage 可以在用户编辑文章草稿时,实时保存内容到浏览器本地,关掉页面再打开也能恢复,无需后端参与。关键在于监听输入变化、合理设置保存时机、处理特殊字符和避免覆盖有效数据。
监听输入并自动保存草稿
对编辑区域(如 textarea 或富文本容器)绑定 input 事件,每次内容变动就写入 LocalStorage。注意别用 keyup 或 change,它们有延迟或不触发问题。
- 推荐监听
input事件,它覆盖打字、粘贴、删除、撤销等所有修改场景 - 加节流(如 1.5 秒防抖),避免高频写入拖慢页面(LocalStorage 是同步操作)
- 示例:
textarea.addEventListener('input', debounce(saveDraft, 1500))
用唯一 key 区分不同文章草稿
不能所有草稿都存在同一个 key 下,否则会互相覆盖。需根据文章标识(如 URL 路径、ID 或标题哈希)生成专属 key。
Java JDK 25 来自 OpenJDK 官方归档,版本为 JDK 25,本条下载地址已指向官方 Windows x64 zip 安装包直链,适合调试旧项目或兼容旧版 Java 运行环境。
- 简单做法:用文章路径做 key,比如
/post/123→draft_/post/123 - 更稳妥:对标题或 ID 做简单哈希(如
String.hashCode()),避免特殊字符或长度超限 - 可额外存一个时间戳字段,方便判断草稿是否过期(比如超过 7 天自动丢弃)
加载时自动恢复未提交的草稿
页面初始化时读取对应 key 的草稿,仅当编辑区为空且本地有内容时才填充,避免覆盖用户已提交的正文。
- 检查
textarea.value.trim() === ''再恢复,防止误覆盖已有内容 - 恢复后可显示提示:“检测到未保存草稿,已自动恢复”
- 若草稿含格式(如 HTML),需确保渲染安全(用
textContent或白名单过滤后再设 innerHTML)
清理机制与用户体验优化
草稿不该永久堆积。用户发布成功或主动清空后,要同步删除 LocalStorage 对应项。
- 提交成功回调里调用
localStorage.removeItem(key) - 提供手动清除按钮,例如“清空草稿”,点击即删当前 key
- 可加字数限制(如最多存 10MB),超限时截断或警告,避免 localStorage 溢出报错
不复杂但容易忽略细节:编码兼容性(中文正常存取)、移动端软键盘收起时机、以及 Safari 无痕模式下 LocalStorage 不可用时的降级提示。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










