[英]Set text for screen reader and hide children from screen readers
我有一个 iframe,其中提供任意内容。 我想确保屏幕阅读器无法访问 iframe 中的内容,并指定选择 iframe 时应读出的屏幕阅读器。
我的期望是在页面上的不同元素之间myDiv
, myDiv
被选为一个单元,并读出Unknown content
。
我尝试了以下
<div id="myDiv" title="Unknown content">
<iframe id="myIframe" aria-hidden="true">
{arbitraryContent}
</html>
</div>
我面临的问题是
aria-hidden
不适用于可聚焦的子元素。Unknown text
并不总是被读取,尤其是在子元素可聚焦的情况下。tabIndex=-1
。 然而,这会导致所有元素(包括myDiv
)无法通过键盘选择。实现我正在寻找的目标的正确方法是什么?
如果您阻止屏幕阅读器阅读整个 iframe 并且它仍然具有可聚焦元素,那么,是的,您有一个致命的可访问性问题:您可以聚焦某些东西,但不允许屏幕阅读器知道聚焦的是什么。 那么该怎么办 ? 它应该什么都不说,还是违背你的定义?
从技术上讲,这意味着aria-hidden=true 中不应该有任何可聚焦的元素。 您必须确保它永远不会发生。
但是,您必须问自己的一个好问题是,为什么要完全隐藏 iframe 中的内容,或者换句话说,明确地使其完全无法访问。
如果您担心不受您控制的内容可能会破坏您页面的可访问性,那么
从管理上来说,基于 WCAG 合规性的认证知道这个问题并且通常接受例外情况,即不考虑您无法控制的事情。
实际上,作为屏幕阅读器用户,可访问性差的 iframe 可能确实给人的印象是您网站的整体可访问性总体上很糟糕,但拥有一些部分可访问的内容肯定比什么都没有要好。 你最好删除 aria-hidden=true。 即使您知道它不是很容易访问,无论如何也要留出一点访问它的机会,而不是绝对阻止它。 也许内容的可访问性会随着时间的推移而提高。
例外情况是 iframe 的内容令人反感、装饰性或在您的页面上下文中没有带来任何真实信息。 典型的例子包括广告和各种小部件(天气、时钟、社交网络共享等)。对于那些,继续,保留 aria-hidden=true 并删除 iframe 的所有可聚焦元素。 无论如何,它们只是无用的噪音,如果完全跳过它们,也不会后悔。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.