Be My Eyes:照片没说清楚时,接着找人帮忙
Be My Eyes 为盲人和低视力用户提供日常视觉协助。可以拍照获取描述、继续追问,也可以联系志愿者,通过实时视频把眼前的问题说清楚。
先尝试拆解问题、设计和实现,再展开思路,检查状态、边界与取舍,并设计验证用例。思路提供分析路径,不给出完整实现。
01
界面实现
将状态通知与描述正文分开
为一个图片描述页面实现状态提示小组件。用户使用读屏器(把页面内容读出来的辅助软件)时,需要知道描述是否准备好,但不应被强制跳转到新内容。
- 已有输入: 父页面传入 phase,取值为 idle(尚未开始)、loading(正在生成)、done(已经完成);done 时另传非空 description,其余状态不传正文。输入合法,不需要实现拍照、网络请求或错误处理。
- 显示规则: idle 的提示为空;loading 显示“正在生成图片描述”;done 显示“描述已生成,可在下方阅读”,并在下方普通正文区显示 description。开始新一轮 loading 时移除旧正文。简短提示使用事先存在的状态区域,让读屏器有机会在合适时机读出变化;不要把整段正文放入自动播报区,也不要调用 focus 移走用户焦点。可参考 W3C 状态消息示例。
- 验收: 从 idle 依次切换到 loading、done(description 为“两件上衣,左边有条纹”),页面应出现对应提示和正文。再切换到 loading 后旧正文消失,提示重新表示等待;同一状态的普通重绘不应反复清空再填回提示。操作前聚焦父页面的演示按钮,组件更新后焦点仍在该按钮。
- 交付: 用 HTML/JS 或熟悉的前端框架实现组件与本地演示。记录上述可见结果和焦点检查,并说明状态区域如何与正文分开。
查看思路
-
将父页面传入的任务阶段作为显示依据,分别安排简短通知和描述正文的职责。
-
让状态容器先存在再更新文字,保留适当的状态语义;不要把移走焦点当成通知方式,也不要每次重绘都重建通知区域。
-
按“等待—完成—再次等待”检查旧正文是否移除,观察焦点,并检查浏览器提供给辅助软件的页面结构(无障碍树),确认状态区域只包含简短提示。