accessibility - 如何从屏幕阅读器中隐藏 ARIA-LIVE,但让他们可以阅读里面的内容?
问题描述
我在 ARIA-LIVE 页面上有这样的块:
<div
aria-live='polite'
role='log'
aria-relevant='additions'
aria-atomic='false'
style='position: absolute; width: 1px; height: 1px; margin-top: -1px; clip: rect(1px, 1px, 1px, 1px); overflow: hidden;'>
<div>message</div>
<div>message</div>
</div>
现在,如果我使用键盘箭头,屏幕阅读器可以到达 aria-live 区域,它位于页面的最底部,并阅读他包含的内容。
有没有办法隐藏 aria-alive 区域,但同时使其中的内容仍然可以被读者正常阅读?
解决方案
这有点像在问如何将 CSS 应用display:none
到一个元素上,但仍然允许看到该元素。
您可以通过指定来隐藏屏幕阅读器中的元素aria-hidden="true"
。如果您也有aria-live
,那么对该元素的任何更新都将对屏幕阅读器隐藏,基本上否定了拥有aria-live
.
您可以做的最好的事情是将标签与该区域相关联,以说明“此元素用于宣布动态更新”或类似的内容。屏幕阅读器用户可能会找到它,但它不会伤害任何东西。他们可以很容易地忽略它并继续下一个元素。
推荐阅读
- c - 我应该如何在 waitpid(pid_t pid, int *status, int options) 中使用 *status?
- json - Angular 无法解析来自 api 调用的字符串(网络核心 3)
- python-3.x - Python 中的实时日志记录
- java - 在 Linux 上使用 OpenJDK 13 + 14 调用 Java SSLContext.init() 时挂起
- java - 这种字符串格式的正确格式模式是什么?
- angular - Angular - 实际应用中的表单验证
- python - 试图循环一个包含多个项目的列表
- node.js - 是否可以在 MediaConvert AWS 服务中转换多个文件?
- c++ - std::type_info 用于运行时定义长度的数组
- node.js - 当请求更长时,Express.js GET 请求失败