【问题标题】:How do I prevent the screen reader from saying "group" when reading this div tag's text?阅读此 div 标签文本时,如何防止屏幕阅读器说“组”?
【发布时间】:2019-03-06 01:43:53
【问题描述】:

在我的网页上,我有一个 div(如下所示),其中包含我希望屏幕阅读器阅读的文本。

HTML

<div tabIndex={0}>
    "text needs to be read"
</div>

即使没有提供 aria-label,我也能听到文本被阅读。但是,我听说“文本需要阅读组”。我想知道如何避免它说“组”?我没有为 div 标签设置组角色。

另一个例子

这是另一个更清晰地描述问题的示例

<span class="jw-icon jw-icon-inline jw-button-color jw-reset jw-text-live" tabindex="-1" data-clicked="true">Live</span>

在任何浏览器中运行上面的 sn-p。它使屏幕阅读器宣布它为“Live, group”。 有什么办法可以减轻这种行为。预期的行为应该就像屏幕阅读器应该将其读取为“实时”

【问题讨论】:

  • 您正在使用哪个屏幕阅读器软件和版本来阅读屏幕?这样一来,人们就可以尝试使用屏幕阅读器来聆听您所听到的内容。
  • 我正在使用 Edge + Narrator。
  • @bunny 你解决了吗?我想知道解决方法

标签: html accessibility screen-readers


【解决方案1】:

这里发生了很多事情。

首先,网页上的所有文本可供屏幕阅读器使用,无需tabindex="0" 即可阅读。屏幕阅读器提供lots of shortcut keys 导航到不同类型的元素(标题、表格、列表等)。对于没有直接导航键的元素,屏幕阅读器用户可以使用向上/向下箭头键遍历accessibility tree(类似于 DOM)。

其次,关于tabindex="0",它只能设置在interactive元素上。 tabindex spec 说:

作者应该只在元素充当交互式控件或小部件时才使它们具有焦点。此外,作者应确保这些可聚焦元素具有适当的 ARIA 角色属性。

关于规范引用第二句中的 ARIA 角色,如果您的元素确实获得焦点,如果它不是本机可聚焦的元素(例如 &lt;a&gt;&lt;button&gt; 或 @ 987654331@),那么它需要有一个合适的role,以便屏幕阅读器用户知道如何与之交互。

与此相关,您提到了aria-labelaria-label 仅适用于具有适当角色的元素。见“2.10 Practical Support: aria-label, aria-labelledby and aria-describedby”。

鉴于所有这些,回答您的问题有点困难,因为您的简单示例不够具体。没有角色的&lt;div&gt; 不应读作“组”。组通常是role="region"(或&lt;section&gt;)。您听到的行为可能取决于您使用的浏览器、屏幕阅读器、屏幕阅读器的导航方式(tabarrow 或 quicknav键)。

【讨论】:

  • 我明白了。我删除了 tabIndex,我对它使用 NVDA 和 Chrome 没有任何问题。但是,如果我使用 Edge + Narrator,如果我使用选项卡或箭头,屏幕阅读器将无法读取 div 中的文本。我应该赋予 div 什么样的角色,以便叙述者可以阅读它? div 仅包含 Web 应用程序标头中的一些信息。
  • 一个更完整的代码示例会有所帮助。如果
    嵌入在
    中(它有一个隐含的role="banner"),则您不需要其他任何东西。您正在使用 narrator 中的向下箭头来遍历 DOM?它跳过了
    ?你有aria-hidden="true"吗?
  • @slugolicious 我有一个类似的问题,我的标题内的保存按钮读取为保存按钮横幅。如何避免说横幅
  • &lt;header&gt; 的默认地标角色为 “banner”。当您导航到地标中的第一个元素时,它将宣布地标类型以及元素的标签。标题中的所有后续元素都不会重复 “banner”。您的按钮是标题中的第一件事吗?
  • @slugolicious 是的,它正在宣布第一个元素。我们能避免这个问题吗?
猜你喜欢
相关资源
最近更新 更多
热门标签