Html JAWS不使用menuitem角色列出元素

Html JAWS不使用menuitem角色列出元素,html,screen-readers,Html,Screen Readers,我正在努力用W3C推荐和JAWS构建一个可访问、有效和语义导航。当使用带有menuitem值的role属性时,带语音(JAWS)屏幕阅读器的作业访问似乎表现不佳,在使用JAWS的快捷键时基本上忽略了它 因此,考虑到以下HTML: <a href="#" role="menuitem">This is a menuitem link</a> 或者更合适的: <button type="button" role="menuitem">This is a me

我正在努力用W3C推荐和JAWS构建一个可访问、有效和语义导航。当使用带有
menuitem
值的
role
属性时,带语音(JAWS)屏幕阅读器的作业访问似乎表现不佳,在使用JAWS的快捷键时基本上忽略了它

因此,考虑到以下HTML:

<a href="#" role="menuitem">This is a menuitem link</a>

或者更合适的:

<button type="button" role="menuitem">This is a menutiem button</button>
这是一个菜单项按钮
然后使用
INS
+
F3
并选择链接或按钮列表,JAWS将显示未找到链接或按钮

有没有更合适的方式将角色与导航和JAWS结合使用


更新:我认为我得出的结论是,在添加可访问的功能时,最好只使用少量的
role
(和
aria-
)属性。在大多数情况下,JAWS似乎能够很好地解释语义代码

JAWS没有在按钮/链接列表中列出您的按钮/链接,因为您已将其角色更改为
menuitem
。根据最新发布的这篇文章,当您更改元素的角色时,它将获得辅助技术的新语义。

也就是说,您的链接或按钮不再是JAWS的链接或按钮,而是menuitem。这就是ARIA的要点。

我仍然感到困惑……您提供的链接显示了嵌套在
menubar
中的
menuitem
,而没有提到必须在
应用程序
角色中。因为我的目标是创建一个菜单导航,所以在我看来,包含的角色应该是
导航
,而不是
应用程序
。问题是,在菜单中,键盘导航与通常网页上的导航有很大不同。例如,左/右箭头不按字符移动,而是在菜单项之间移动。要做到这一点,您需要将键盘从JAWS的操作中解放出来。这就是为什么您必须将
应用程序设置为
角色的原因。否则,你可以放置一个菜单按钮(即,当点击按钮时,弹出一个菜单)。我感谢你的回答,但我认为我不同意。据(Mozilla易访问性QA工程师)所说,很少使用
role=“application”
而不是菜单。我已经更新了我的答案。你说得对,
菜单不应该在
应用程序
区域内。但在你的情况下,大白鲨并没有行为不端,因为在它看来,它不再是一个按钮,也不再是一个链接。