繁体   English   中英

屏幕阅读器 - 仅阅读具有 role="alert" 而不是焦点的元素

[英]Screen reader - Only read element with role="alert" and not on focus

我正在为需要使用屏幕阅读器的网站构建过滤器,而我目前正面临这个问题。

该过滤器构建在一个模态中,该模态包含一组复选框和一个按钮,该按钮显示用户在选中每个复选框后获得的点击次数。 按钮中的文本是动态的,并且会根据选中复选框后的点击次数而变化。

按钮中的文字显示“显示 X 次匹配”。 我在按钮上添加了一个 role="alert" ,以便屏幕阅读器在按钮中的值/文本发生变化时立即获取。

我的问题是,当按钮被 role="alert" 触发时,屏幕阅读器是否可以阅读文本“X hits”,而当用户向下导航到按钮时,文本“Show X hits”?

我的按钮示例:

<button type="button" role="alert" class="btn btn-primary" v-on:click="search()">
   <span class="sr-only">{{amount}} hits.</span>
   <span>Show {{amount}} hits.</span>
</button>

更新设法使用此方法获得有效的解决方案:

<button type="button" class="btn btn-primary" v-on:click="search()">
   <span aria-hidden="true">Show {{amount}} hits.</span>
      <div class="sr-only">
          <span>Show</span>
          <span role="alert">{{amount}} hits</span>
      </div>
</button>

您不应该将活动区域放在按钮内。 button角色有presentational children

这意味着,根据 ARIA 标准,应该忽略按钮的任何子项的角色。 这包括role="alert"

也许它适用于您的浏览器/屏幕阅读器组合,但我不会依赖它。

我看不出文本为什么会在按钮内的原因,因为你隐藏了它。

所以我推荐这个:

<button type="button" class="btn btn-primary" v-on:click="search()">
  Show {{amount}} hits.
</button>
<div class="sr-only" role="alert">{{amount}} hits</div>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM