wai-aria - 使 aria-live 区域读取链接
问题描述
当事件发生时,我想在 aria-live 区域内放置一个链接。
但是,当画外音读取 aria-live 区域时,它会以文本形式进行读取,并且不会读取到有可点击的链接。
所以我在事件发生时的标记是
<div role="region" aria-live="assertive">
hello <a href="/world">world</a>
</div>
Voiceover 在事件发生时读取 hello world,然后将上下文放回它在引发事件之前所在的元素上。
有没有办法让画外音阅读 aria-live 中的内容而不仅仅是直接文本?
解决方案
不,那是aria-live
- 它宣布更改的文本。没有宣布其他信息,例如角色(链接或按钮或列表)。
您可以“强制”阅读其他文本,但您必须手动执行。所以你可以添加这样的东西:
<div role="region" aria-live="assertive">
hello <a href="/world">world</a> <span class="sr-only"> link </span>
</div>
所以你会听到“hello world link”,但是当用户手动导航所有元素时(通过使用画外音向右滑动),我会在宣布后删除额外的文本,他们会听到:
- “你好”
- 《世界链接》
- “链接”
(有关“仅 sr”类的信息,请参阅什么是 Bootstrap 3 中的 sr-only?)。
但这并不是一个很好的解决方法。添加新元素时听到“hello world 链接”听起来就像“hello world”是链接,而只有“world”是链接。
如果您多解释一下用户体验,可能会有更好的解决方案来解决您想要实现的目标。
推荐阅读
- c++ - Jeopardy Dice 在用户和计算机都离开后显示总回合数的问题
- python - 使用 *args 将毕达哥拉斯定理推广到 n 个事物
- javascript - setInterval 不会调用函数
- google-sheets - Google 表格查询给出错误“无法解析函数查询参数 2 的查询字符串:NO_COLUMN:Al”
- java - 第一次启动 API、spark-java 和 elasticsearch
- ember.js - Ember.js 中使用的“@”符号是什么?
- android - Firebase 警告 settings.crashlytics.com 请求的响应时间很慢
- python - 从scrapy中的POST请求下载文件
- kotlin - Kotlin 不一致地生成 SAM 存根
- sql-server - 将默认 GUID 值插入表列