E6.10.3preserve input on error设计

错误页不应丢失用户已输入的内容

别名: 错误丢稿 · 提交失败保留 · unsaved on error

概念解释

提交或保存失败之后,若整页被换成错误页,输入框里那些还没进服务器的字很容易一起被拆掉。不应丢失已输入的内容,指错误呈现不能以销毁本地草稿为代价。用户可以面对失败,但不能被迫把十分钟的编辑再打一遍。这一条不管错误该如何分类,只管失败表面有没有把稿子吃掉。

机制

单页应用里,路由级错误常被做成卸载当前树、挂上一张静态错误页。卸载会丢掉未受控的输入、光标位置、已选文件。人记得自己写过,却在错误页上找不到那些字,失败的代价从「再试一次」变成「工作没了」。即便服务端没收到,本地内存里通常还在;丢失是界面选择把那块内存扔掉。浏览器刷新和真的导航离开才会物理清掉;错误页若模仿成一次导航,就误用了导航的销毁语义。保留稿子让重试有对象可发,返回也有东西可救,错误页的两条出路才接得上已经做过的功。

边界

内容因安全原因不能留在这台设备上(共享电脑上的密码、一次性密钥)失败后应清,并事先说清。文件选择器选出的本地路径有的平台不允许程序记住,错误页至少应说明「需要重新选择文件」,不要假装文件还在。多人同时编辑冲突时,保留的是本地版本,还要能看见服务器版本,不能只藏一份。会话过期的错误常伴随身份切换,稿子要先收到安全的暂存里,再要求登录,而不是登录页把表单顶掉。

怎么落地

  • 提交失败时不要卸载带输入的视图;在原表单上显示错误,或错误页叠在仍活着的表单之上。
  • 非要换路由时,先把草稿写入可恢复的存储,错误页提供「回到编辑」并带出原文。
  • 重试应发送还在本地的那份,而不是一张空表。
  • 验证:填一段独特的句子,拔网提交,看那句话还在不在。不在,错误页就在惩罚已经完成的劳动。

延伸

  • 同组E6.10.1 错误页需提供返回与重试 · E6.10.2 需区分网络、权限与服务端问题
  • 相邻E6.14 离线与连接状态提示 · E2.18 富文本编辑器 · E6.13 操作结果的内联呈现
  • 站内检索preserve draft · submit failure · lost input

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/E6.10.3