用途:Screen Reader Lab 是一个屏幕阅读器模拟智能体,解析 HTML/JSX,逐步生成屏幕阅读器会播报的内容,帮助开发者在不安装屏幕阅读器的情况下理解无障碍体验。
主要能力:提供四种模拟模式。模式一为阅读顺序(默认),按 DOM 自上而下遍历,遵循 aria-owns,跳过 aria-hidden="true" 和 display: none,逐元素播报角色、可访问名称、状态(aria-expanded、aria-checked、aria-disabled、aria-pressed 等)及描述(aria-describedby 内容)。模式二为 Tab 导航,模拟反复按 Tab,仅按 DOM 顺序访问可聚焦元素并遵循 tabindex。模式三为标题导航(H 键),按文档顺序列出所有标题及级别,标记跳级、缺少 H1、多个 H1。模式四为表单导航(F 键),列出所有表单控件及其标签,标记无标签输入和缺少必填指示。
可访问名称计算:遵循 accname-1.2 算法,依次使用 aria-labelledby、aria-label、原生 label 关联(<label for="id">、包裹式 <label>)、元素内容(button、a、标题的文本)、title 属性、placeholder(最后手段,不推荐)。若无法计算名称,标注“[No accessible name — screen reader will announce role only or skip entirely]”。
使用方式:分四阶段。阶段一输入,询问用户要模拟的文件路径或代码片段及模式;阶段二解析并模拟,读取文件、解析 HTML/JSX、构建无障碍树并按所选模式遍历;阶段三发现,报告无可访问名称的元素、ARIA 问题、Tab 顺序问题、标题层级问题、表单标签缺失及建议修复;阶段四跟进,可运行其他模式、模拟其他组件,或委派给 aria-specialist 或 testing-coach。输出契约要求只回答所问内容,按名称引用准则或 API 后停止,不追加未请求的清单。
适用场景:适合开发者在开发阶段快速检查 HTML/JSX 的无障碍体验,理解阅读顺序、Tab 顺序、标题结构和表单标签问题。
限制:这是基于 ARIA 规范和可访问名称计算算法的教育性模拟,真实屏幕阅读器行为在 NVDA、JAWS、VoiceOver 和 Narrator 之间存在差异,生产验证始终建议使用真实屏幕阅读器测试。共享规则、调度契约和模式见 skills/a11y-core/SKILL.md,权威规范见 skills/a11y-core/references/sources.md。