咏叹调禁用只能应用于可聚焦元素吗?它不也适用于子元素吗?



我使用Bootstrap创建了一个页面,该页面具有下一页和上一页链接的标准布局。在第一页上,我禁用了"上一页"链接,如下所示:

<div role="navigation">
<ul class="pager">
<li class="previous disabled" aria-disabled="true">
<a href="#">Previous page</a>
</li>
<li class="next">
<a href="search.php?page=2">Next page</a>
</li>
</ul>
</div>

屏幕阅读器(JAWS、NVDA和VoiceOver)似乎没有看到aria-disabled="true"标志,尽管W3C WAI-ARIA规范规定:

被禁用的状态适用于当前元素和所有元素的可聚焦子元素应用aria-disabled属性。

如果我将aria-disabled="true"添加到链接:

...
<li class="previous disabled" aria-disabled="true">
<a href="#" aria-disabled="true">Previous page</a>
</li>
...

然后它就像我希望的那样工作,屏幕阅读器将链接描述为"禁用"。

我是误解了WAI-ARIA规范,还是这是屏幕阅读器实现的一个"特性"?Bryan Garaventa在评论"我如何告诉屏幕阅读器链接被禁用"时提到:

。。。aria-disabled的使用最适用于具有定义的角色,例如role=button。

aria-disabled只能应用于可聚焦元素吗?

对于JAWS 16,IE和Chrome都存在您所描述的问题,但FF 38可以正常工作(不确定以前版本的FF)。当我点击<li>aria-disabled="true"并且没有的链接时,<a>、FF 38和JAWS 16上的aria disabled="true"表示"上一页不可用链接"。

实际上,它并没有阻止我激活该链接,因为ariadisabled不是这样做的,但JAWS似乎知道子元素被禁用是因为父元素被禁用了。

它也适用于ipad2上iOS 8.3上的VoiceOver。VO表示"上一页变灰链接">

在这种情况下,您可能必须决定是否保留格式正确的html并让用户代理修复错误,或者是否应该尝试围绕这个问题进行编码,在您的情况下,这会使链接本身禁用aria。

根据WCAG,在'li'上不允许禁用aria要素将其直接应用于"a"标记。

相关内容

最新更新