可访问性:aria-haspopup可以用于什么?

37
我有可靠的消息,aria-haspopup 对于子菜单(如弹出上下文菜单或子级菜单)是适用的。它被用在jQuery UI Selectmenu中,并且也在这个优秀的示例中使用。
但我无法确定在以下两种情况中是否适用aria-haspopup
  • 信息弹出框,如 Bootstrap -用于显示上下文信息, 但不包含任何链接
  • 弹出浏览器窗口 -例如带有target="_blank"的链接
在这些情况下,aria-haspopup是否适用?如果不适用,则应该使用哪些ARIA属性?

你能理解这是否应该用于信息弹出框? - gaurav5430
2个回答

34

官方规范中只应将其用于菜单或子菜单,来自ARIA spec 1.0

指示元素具有弹出上下文菜单或子级菜单。

Whatsock样式指南在“模态”部分涵盖了这一点:

为屏幕阅读器用户添加属性aria-haspopup =“true”以通知附加了“弹出窗口”可能听起来像一个好主意,但这不是一个好主意。 简而言之,除非您触发了菜单,否则不要使用aria-haspopup。

一些关于扩展含义的讨论正在进行中,但目前假定它仅适用于菜单。

我给出了关于Bootstrap工具提示的答案,这应该会有所帮助。

对于弹出式浏览器窗口,屏幕阅读器会自动进行通知,不需要额外的标记。(注意:为了方便屏幕放大器用户,请包含一个新窗口的视觉指示器。)

1
我认为这是一个很好的答案。还有一件事需要注意的是,微软使用此属性在其浏览器中启用“悬停”项目的触摸可访问性:https://msdn.microsoft.com/en-us/library/dn265029(v=vs.85).aspx 因此,虽然从语义上讲问题和答案是正确的,但在实践中,我需要此属性来启用必要的“悬停”,即鼠标悬停效果(当设计不是由我来修复时)。因此,带着复杂的感情,有些不幸(尽管看到微软首先使用语义信息很酷),除了弹出菜单之外,还有其他实际用途。 - natevw
target="_blank" 不被大多数屏幕阅读器支持。https://www.powermapper.com/tests/screen-readers/navigation/a-target-blank/如果包含视觉指示器,则必须以可访问的方式呈现。 - Steven Mouret

24

WAI-ARIA 1.1规范(撰写时为最新版本)相对于1.0版扩展了aria-haspopup的使用方式

[aria-haspopup]表示可以通过元素触发的交互式弹出元素的可用性和类型,例如菜单或对话框。

弹出窗格通常显示为位于其他内容之上的内容块。作者必须确保作为弹出内容容器的元素的角色是menulistboxtreegriddialog,并且aria-haspopup的值与弹出容器的角色相匹配。

因此,您应将aria-haspopup的值设置为触发元素上的角色属性的相同值。如果设置为true,则将被解释为menu,以便与1.0版一致,其中aria-haspopup仅用于菜单。

请注意,这里有关工具提示(如Bootstrap弹出框)的内容:

在这种情况下,tooltip不被视为弹出窗格。

弹出的浏览器窗口不是页面上的HTML元素,因此具有target="_blank"的锚元素不应具有aria-haspopup属性。


1
本答案描述了ARIA 1.1中aria-haspopup的预期用途,但请注意,浏览器和辅助技术对新值的支持目前仍然很差。 - andrewmacpherson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接