嘿 @awesomerobot,我是 Cody 的同事,也是一名辅助功能工程师。我检查了该存储库以诊断问题。您可能已经知道,核心问题似乎是 (1) 屏幕阅读器无法查看被隐藏帖子的内容,以及 (2) 帖子仅在 PostStreamViewportTracker 跟踪的用户视图内才会被取消隐藏。
在考虑潜在的修复方案时,我想优化两点:(1) 使屏幕阅读器能够通过标题导航每个帖子,以及 (2) 最大限度地减少对 Discourse 存储库的更改和对性能的影响。
我推荐的方法是为每个加载的帖子保留一个轻量级的包装器,其中包含用于标题导航的语义 H2,而帖子的主体内容保持隐藏。这使得标题对于辅助技术来说是稳定的,而不会增加整个页面的 DOM。当用户通过标题导航到达任何帖子的 H2 时,屏幕阅读器将触发页面滚动,进而取消隐藏帖子本身的内容。
此解决方案的可行性取决于何时加载下一批帖子。一个可选的改进是使用一个仅供屏幕阅读器使用的哨兵标题“加载更多帖子”(类似于您 PR 中提出的“加载更多区域”),该标题位于已加载帖子列表的底部。当此标题进入视图或从标题转盘中选择时,它会加载下一批帖子,并通过 aria-live=polite 消息宣布完成。