G4.06.1return to the slot after a subtask设计研究

中途跳出执行子任务后需回到原位

别名: 子任务回原位 · nested task return · 跳出后返回 · resume parent task

概念解释

主流程做到某一格——收货地址、附件、选一个联系人——人被送去完成另一件较小的事,做完后应落回原来那一格,主流程的其余部分还在。子任务后回到原位说的是任务图上的一次往返,不是浏览器里弹 history 的「上一页」。系统返回可能会碰巧走对,但原位是产品自己欠的:从哪一格出去,就进哪一格。

机制

Altmann 与 Trafton 的目标记忆模型里,被打断的目标靠线索恢复。主流程在跳出时被挂起,线索是那一格的位置、已填的邻格、滚动停在哪。子任务若结束在自己的完成页或首页,主目标的线索不在视口里,人必须重新觅食「我刚才在填什么」。工作记忆只能稳定地挂住一个前景目标,子任务一旦成为前景,主流程的游标要由界面替人记。

产品常见的失败是子任务用一套独立路由,完成后 navigate('/') 或打开「已添加」成功页。浏览器 Back 会先穿过子任务内部的步,而不是一步回到那一格;人连按返回,主流程可能已经卸载。原位恢复要在子任务关闭时显式把主流程的实例交回来——同一滚动、同一焦点槽——而不是重新挂载一张空白表。

怎么研究

在长表单中部插入一个强制子任务(选地址、上传文件),完成后看人是否无需寻找就落在该槽。

  • 自变量:子任务结束去哪(成功页 / 首页 / 原槽)、主表在子任务期间是否保活。
  • 因变量:回到原槽的时间、误用系统返回穿过子任务内部步的次数、口头「我刚才填到哪了」。
  • 方法论注意点:子任务只有一屏时,结束页和原位视觉上接近,测不出走丢。要把主表做长,原槽不在首屏。不要把这条测成「Back 能不能用」——允许用产品自己的「完成 / 取消」,看它交回的是不是原槽。中断恢复的实验室传统(Altmann)用的是外部打断,这里的打断是产品自己发起的,生态更干净,但被试会把子任务当成主任务的一部分,指导语要写清「做完那件小事,继续填表」。

边界

子任务就是主任务的下一步(向导第 2 步),不存在「跳出」,结束应前进,不是回原位。用户在子任务里主动放弃主流程(点 Logo 去干别的),原位债务取消。子任务在新窗口完成时,原窗口若还在,原位本来就没动,需要的是焦点回到原窗口,而不是再导航一次。

怎么落地

  • 从某一槽拉起子任务时记下返回锚点(路由 + 槽 + 滚动);子任务的「完成」和「取消」都导航回该锚点,不要去成功页或首页。
  • 主流程在子任务期间保活或可完整恢复,原槽在视口内并聚焦。
  • 不要把系统 Back 改写成「回原位」而让子任务内部的返回消失;子任务内部仍弹自己的栈,只有关闭子任务才交回锚点。
  • 验证:在一屏以外的槽打开选地址,完成。第一帧应是那张表、那个槽,不要出现「地址已添加」再让人自己找回去。取消也应回同一槽,值不写。

延伸

  • 同组G4.06.2 子任务的结果需带回主流程 · G4.06.3 多层嵌套任务需要明确的返回栈
  • 相邻G4.01 返回栈与返回语义 · G4.04 新窗口与原地跳转 · G4.05 断点续做
  • 站内检索nested task · return to slot · goal memory

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/G4.06.1