【问题标题】:accessibility - aria-haspopup menu - interactive elements other than menuitem in the menu辅助功能 - aria-haspopup 菜单 - 菜单中除 menuitem 之外的交互式元素
【发布时间】:2021-08-18 06:19:46
【问题描述】:

问题陈述和现有理解

我有一个弹出窗口,其中包含分成不同部分的不同类型的内容,并在单击按钮时触发。我试图在此实现中公开适当的可访问性/ aria 语义。 (它不是一个模态对话框,而是一个简单的就地弹出窗口)。根据我目前的研究,我认为这是有道理的:

  • 触发按钮上的aria-expanded
  • 触发按钮上的aria-haspopup="menu"
  • role="menu" 在弹出窗口中
  • role="menuitem" 弹出窗口内的内容
  • 其他可选的键盘辅助功能

示例:

WAI ARIA 标准定义了一个实际的 role="menu" 小部件,但这 特定于触发动作或类似应用程序的菜单 职能。 ARIA 菜单只能包含菜单项、复选框菜单 项、单选按钮菜单项、单选按钮组和子菜单。

另一方面,Bootstrap 的下拉菜单被设计为通用的 并适用于各种情况和标记结构。为了 例如,可以创建包含额外的下拉菜单 输入和表单控件,例如搜索字段或登录表单。为了 因此,Bootstrap 不期望(也不自动添加)任何 真正的 ARIA 菜单所需的角色和 aria- 属性。作者 必须自己包含这些更具体的属性。

我的问题有点类似,但在决定 menuitem 角色时我需要一些帮助。

要求:

这就是我的弹出菜单的样子:

  • 有 2 个部分由分隔线隔开
  • 第一部分包含一些信息和一些交互元素
  • 第二部分有链接
  • 对于第二部分,我对在每个部分都使用 menuitem 角色非常满意
  • 虽然我不太确定如何处理第一部分
  • 根据目前的理解:
    • menu 中没有 menuitem 角色的任何内容都将被忽略以创建可访问性树
    • menuitem 的任何子级都已删除其语义。因此,menuitem 中的 button 不会这样公布。
  • 与 twitter 实现一样,我可以通过不向它们添加 menuitem 角色来忽略第一部分中的非交互式元素,但我应该如何处理交互式元素。例如,对于Funds 项目,我不能将role="menuitem" 添加到整个容器中,因为这样Add Funds 按钮将不适用于屏幕阅读器用户(?)。
  • 我可以在按钮上添加role="menuitem",并确保添加一个更好的aria-label,它会宣布当前资金以及允许用户单击按钮添加资金,但我不是真的确定这一点。

问题:

  • 在这种情况下是否应该应用任何其他 ARIA 角色/可访问性语义?这个用例是符合 role="menu" 定义的菜单吗?
  • 如果 role="menu" 和 role="menuitem" 最适合此设置,我应该如何处理组件第一部分中的交互元素?
  • 如果我的要求不适合任何弹出角色,是否可以不使用 aria-haspopup 并且仅使用 aria-expanded 公开它?

其他资源:

【问题讨论】:

    标签: javascript html accessibility wai-aria web-accessibility


    【解决方案1】:

    我自己是屏幕阅读器用户,根据经验,与菜单相关的 ARIA 角色通常不合适,导致页面使用困难。 所以我最好的建议是不要在如此复杂的设置中使用它。使用 aria-expanded 可能是最合理的,当然也足够了。

    一旦它比非常简单的项目更进一步,它就不再是最严格意义上的菜单,屏幕阅读器在使它们可用和/或提供正确信息方面存在各种困难。 菜单应该仅由可以通过按下它们来激活的项目组成,仅此而已。 请记住,ARIA 在全球设计时考虑了原生 UI 元素。在本机(非 Web)程序中,菜单可以包含项目和分隔符,仅此而已。所以这里应该是一样的。 顺便说一句,链接的问题也是这么说的。

    如果您在菜单中添加更复杂的元素,则会出现以下问题,并且它们的答案根本不明显:

    • 在开始输入之前是否需要按 Enter 键激活菜单内的文本字段?
    • 是否需要按 Tab 键才能到达项目内的按钮或链接?还有一个文本字段或一个选择?
    • 如何在不激活当前选项的情况下打开和关闭菜单内的选项?很少有人知道 Alt+向下/向上箭头,在他们的 Web 组件中实现它们的人更少

    在菜单中添加更复杂的项目会在 Office 2007+ 和 Windows 8+ 中提供功能区。它们是与屏幕阅读器一起使用的噩梦。 您永远不知道是否必须按 Enter、Tab 或仅使用箭头键来达到您想要的效果。 所以请不要在网络上复制此内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-27
      • 2019-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多