滑块内的按钮不会从画外音中调出 (a11y)

Buttons within a slider are not called out from Voiceover (a11y)

我有一个带有时间栏和标记的视频,用于显示时间栏上要访问的点(检查点)。我希望能够专注于检查点标记并向 VoiceOver 宣布它,但是无法通过屏幕阅读器到达聚焦的检查点标记(按钮),而按钮 从浏览器获得焦点。

如果我要删除时间栏上的 role="slider" 或 role="progressbar",焦点将放在检查点上。这向我表明 VoiceOver(在 Safari 中)不会深入这些元素。

一个选项是将按钮分隔到时间栏之外的单独 div,但这看起来很乱。是否有任何想法让 VoiceOver 在 role="slider" 或 role="progressbar" div 中宣布按钮,当它们获得焦点时。

注意:这在 Chrome 中有效,所以这是一个 Safari 问题。

这是一个示例:https://codepen.io/kmcgrady/pen/oVZxLE请务必使用 Safari 并访问框架,然后尝试按 Tab 键进入按钮。

<div role="slider" aria-valuemin="0" aria-valuemax="100" aria-valuenow=50>
    <button tabindex="0">Hello</button>
</div>

不幸的是(对你而言),VoiceOver 是正确的。 role="slider" says that all child elements are considered "presentational" 的规范,这意味着子 DOM 元素没有作用。所以你的嵌入式按钮失去了它的 "button-ness" 并且变成了纯文本。如果 Chrome 有效,那么就错了

我用 NVDA(在 PC 上)和 Firefox 和 Chrome 尝试了你的代码笔示例,它们都(正确地)忽略了你的按钮。然后,我在您的按钮前后添加了一个按钮,并且找到了这些按钮,正如我所期望的那样。如果我在 NVDA 中使用 B 键按按钮导航,您的按钮将被忽略并找到示例按钮。如果我在 iOS 上尝试示例并将转子更改为 "Form Controls",则向上或向下滑动会忽略您的按钮。

因此,您可能需要与 UX 人员合作,才能为用户提供良好的体验,让他们到达您的检查点。当您 select 一个检查点按钮时,它是否应该将您带到视频中的那个点?我认为在滑块外设置一系列检查点按钮不会太糟糕。播放、暂停、音量、隐藏式字幕和其他此类按钮都在时间栏之外,因此检查点多几个按钮可能还不错。