【问题标题】:Screen reader aria live assertive text is interrupted屏幕阅读器 aria live 自信的文字被打断
【发布时间】:2018-08-01 21:25:19
【问题描述】:

$('#firstButton').focus();
<div id="liveRegion" aria-live="assertive">
  This is a very long text
</div>
<button id="firstButton">First Button</button>

我是可访问性问题的新手。我基本上有一个按钮,我希望将焦点放在页面加载上,但我也希望 liveRegion 中的屏幕阅读器可以拾取文本。 现在,文本将在页面加载期间的某个时间点被中断,并且焦点转到按钮。 有没有办法让屏幕阅读器不被打断?

【问题讨论】:

    标签: javascript html accessibility wcag wcag2.0


    【解决方案1】:

    直播区域起初可能会令人困惑。实时区域的目的是公布页面的更改,而不是公布页面加载信息。页面加载后,如果页面发生变化,例如元素中的文本或添加了新元素,如果使用了aria-live 属性,则可以宣布这些变化。

    大多数页面在加载时不会宣布任何内容。屏幕阅读器用户会听到页面正在加载,当它完成时(通常在屏幕阅读器中有一个声音提示,让您知道页面是否仍在加载或是否完成),通常会宣布页面标题,然后读取任何具有初始焦点的对象。

    如果您确实需要在页面加载后阅读某些内容,那么它可能应该具有初始焦点。但要小心,因为将焦点放在非交互式元素上,例如段落 (&lt;p&gt;) 或非语义元素 (&lt;div&gt;) 可能会造成混淆。如果你不得不求助,请确保该元素具有tabindex="-1",这样该元素就不会处于正常的键盘焦点顺序中。

    【讨论】:

      【解决方案2】:

      因此,无法通过按钮获得焦点来阻止阅读文本。 说什么的优先顺序很大程度上取决于屏幕阅读器/浏览器/操作系统的组合,但通常,获得焦点的元素优先于任何活动区域,包括断言。

      您可以做的是在焦点移动到按钮后显示活动区域断言文本。 届时,它有更大的机会被不间断地宣布。

      无论如何,页面加载时存在的活动区域并不是在所有平台上都能可靠地读取。 为确保它能够被有效地朗读,请在页面完全加载完成后让它出现在 DOM 中。

      【讨论】:

        猜你喜欢
        • 2018-10-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-10
        • 2013-08-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多