javascript - 需要在执行函数时宣布 aria 标签
问题描述
<div class="accordion-header" (click)="toggleExpandCollapse()" tabindex="0" (keyup.enter)="toggleExpandCollapse()">
<span class="accordion-title" role="button" [attr.aria-label]="toggled ? menuItemHeader.label + 'expanded' : menuItemHeader.label + 'collapsed'">`{{ menuItemHeader.label }}</span>`
我目前有这个可以折叠或展开的手风琴元素。当它被折叠时,屏幕阅读器会宣布它是折叠的,如果它被展开也是一样的。对于可访问性用户,我现在需要的只是当他们按下回车键来展开手风琴时,屏幕阅读器应该宣布“展开”。所以我需要 (keyup.enter)="toggleExpandCollapse()" 来宣布 aria-label="expanded"。我怎样才能做到这一点?
解决方案
aria-*
属性分为两组:状态和属性。
状态是可以改变的东西,通常是由于用户交互,例如aria-checked
.
属性是定义对象“性质”的东西,它的值很少改变,例如aria-required
.
当属性更改时,不会通知用户发生更改。
当状态改变时,屏幕阅读器会宣布改变。
aria-label
是一个属性。当您进行更改时,它的值不会公布。
aria-expanded
是一种状态。它的值将在您进行更改时公布。
我建议您不要更改aria-label
对象的值,而是aria-expanded
在真假之间设置和切换其值。
推荐阅读
- python - 尽管我遵循了文档,但有一个错误
- python - 列表+字典理解键过滤器
- javascript - 自定义 javascript 幻灯片元素有问题。主键无反应
- c# - 如何在方法中调用其他数据库的存储过程
- javascript - 如何在反应打字稿中保存在json文件中所做的更改
- react-native - 反应本机博览会错误,npm ERR!代码 ERR_OSSL_PEM_NO_START_LINE
- azure - Azure AppService ARM 完整部署 - 如何删除现有的 hostNameBinding?
- java - 应用重启后使用 Spring Boot 获取外部 API 返回 400 错误请求
- google-apps-script - 使用谷歌应用脚本自动将脚本添加到谷歌文档
- flutter - 滚动后如何防止 ListView.builder 中的项目重新渲染?