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

时间:2013-12-04 16:19:52

标签: javascript accessibility wai-aria

我有良好的权限,aria-haspopup适用于子菜单(例如弹出上下文菜单或子级菜单)。它在jQuery UI Selectmenu上使用,也用于此great example.

我无法知道的是aria-haspopup是否适用于以下两个示例:

  • 信息弹出窗口,例如Bootstrap's - 用于上下文信息,但不包含任何链接
  • 弹出浏览器窗口 - 例如与target="_blank"
  • 的链接

这些情况下aria-haspopup是否合适?如果没有,是否应该使用ARIA属性?

2 个答案:

答案 0 :(得分:21)

正式地说,它应仅用于ARIA spec 1.0

中的菜单或子菜单
  

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

Whatsock style guide涵盖了“模态”部分:

  

通过向触发元素添加属性aria-haspopup =“true”来通知屏幕阅读器用户附加“Popup”可能听起来是个好主意,但这不是一个好主意。   ...简而言之,除非您触发菜单,否则不要使用aria-haspopup。

在将来的版本中有some discussion about expanding the meaning,但目前假设它适用于菜单。

我给了an answer about Bootstrap's tooltips这应该有帮助。

对于弹出式浏览器窗口,无论如何都会由屏幕阅读器宣布,不需要额外的标记。 (注意:屏幕放大镜用户可以使用新窗口的可视指示器。)

答案 1 :(得分:7)

WAI-ARIA 1.1 规范(在撰写本文时为当前规范)expands the use of aria-haspopup与1.0规范相比:

  

[{aria-haspopup]指示可由元素触发的交互式弹出元素(如菜单或对话框)的可用性和类型。

     

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

因此,您应该将aria-haspopup的值设置为与触发元素上的role属性相同的值。如果设置为true,它将被解释为menu以符合1.0规范,其中aria-haspopup仅用于菜单。

但是请注意有关工具提示(例如Bootstrap弹出窗口)的

  

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

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