html - 当专注于某个项目时,对讲/画外音不会读取 <legend>

标签 html accessibility wai-aria talkback

我试图弄清楚当焦点位于输入元素上时如何使对讲/画外音宣布图例。大白鲨读了这个传说。唯一的问题是对讲/画外音。我知道当焦点移动时,屏幕阅读器会读取焦点下的元素。如果是这样的话,那么不确定 Jaws 在桌面上的表现如何。我尝试了 aria-labelledby ,但我必须在很多地方添加,而且它将该区域视为不符合预期的区域。

setTimeout(() => document.getElementById('f1').focus(), 3000);
<!doctype html>
<html lang="en-US">
  <body>
    <form name="form1">
      <fieldset class="address" name="billto">
        <legend>Billing Address</legend>
        <section>
            <label for="f1">Street</label>
            <input id="f1" name="street">
            <br>
            <label for="f2">City</label>
            <input id="f2" name="city">
            <br>
            <label for="f3">State</label>
            <input id="f3" name="state">
            <br>
            <label for="f4">Zip code</label>
            <input id="f4" name="zipcode">
            <br>          
        </section>
      </fieldset>
    </form>
  </body>
</html>

最佳答案

如果您的代码在语义上是正确的,那么您不必执行任何操作。让各个屏幕阅读器按照他们认为合适的方式处理它。在您的简单代码示例中,使用 iOS 上的 VoiceOver(我没有 Mac 来尝试),当我向右滑动时,我的 VO 焦点转到“帐单地址”边框,并宣布为“帐单地址,表单开始” ”。我不会听到<legend>如果我滑动到任何输入字段。

使用 NVDA,如果我在 DOM 中向下箭头(类似于使用 VoiceOver 向右滑动),我会听到“分组,帐单地址”。如果我 tab 到输入字段而不是向下箭头,从而跳过 <legend>文本,文本仍然在宣布第一个字段之前宣布,“帐单地址、分组、街道编辑已自动完成空白”。

所以它似乎工作正常。如果对讲不能正确播报,则说明对讲存在错误。

关于html - 当专注于某个项目时,对讲/画外音不会读取 <legend>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68551175/

相关文章:

accessibility - 使用 ARIA 制作可访问选项卡时,是否可以从 DOM 中删除 'hidden' 内容?

wai-aria - JAWS 读取的 aria-hidden true

javascript - 点击提交按钮后,如何将使用多个类型的输入值从表单显示到另一个页面创建的表?

html - 每个主要浏览器上的外观不同

html - 如何将文字和图片并排放置?

html - WCAG 标准的可访问性 - 如何处理标签内的标签

android - 发音自定义语句而不是选中/未选中

ios - 如何在 VoiceOver 打开时从 UITapGestureRecognizer 获取正确的屏幕坐标

html - JAWS 屏幕阅读器在 FireFox 中重复树项目

javascript - 从 div 到 div 绘制 flex 的 SVG 箭头线