【发布时间】:2025-12-22 18:55:06
【问题描述】:
UA:Mozilla Firefox 28.0; AT:JAWS 14.0.1534 和 NVDA 2014.1; 操作系统:MS Windows 7 Professional SP1
鉴于以下简单的 ARIA 增强菜单小部件,为什么永远不会读取相关的“去哪里”标签?据我了解,与可聚焦元素相关的标签应在收到焦点时公布。相反,只会读取菜单项的文本。
<div role="application">
<ul id="main-menu" role="menu" aria-label="Where to go" aria-activedescendant="item-1" tabindex="0">
<li id="item-1" role="menuitem"><a href="page-1.html" tabindex="-1">First page</a></li>
<li id="item-2" role="menuitem"><a href="page-2.html" tabindex="-1">Second page</a></li>
<li id="item-3" role="menuitem"><a href="page-3.html" tabindex="-1">Third page</a></li>
</ul>
</div>
是否有某种“优化”以防止每次菜单获得焦点时向用户读取过多信息?就像,“menuitem”的内容将优先于包含菜单小部件的标签。当然,这只是一个疯狂的猜测。有没有人有更多细节可以帮助澄清上述情况?
一个基于相同代码示例的相关问题:我发现取消包含 div(具有 role="application" 属性的那个)绝对不会改变小部件的行为(有 Javascript 代码用于控制键盘交互和更新 UL 的 aria-activedescendant 属性)。你什么时候真正需要一个带有role="application"的容器?
【问题讨论】:
-
我的第一个猜测是应用程序
role搞砸了。 Ted Drake 写了一封 article about theapplicationrole 可能对一些人有所帮助。