我们使用Bootstrap的Dropdown.js。
由于我们的应用程序的任何其他部分都不使用Bootstrap,所以我们通常不使用aria属性,所以现在我们不确定我们可以从副本中剥离哪些属性&粘贴的HTML结构。
在我看来,我们只需要这个:
<a href='#' class='dropdown-toggle' data-toggle='dropdown'>Dropdown</a>
<ul class='dropdown-menu'>
<li><a...>...</a></li>
</ul>
但一位联合开发人员认为,我们还需要data-target='#'
和role='button/menu'
,甚至aria-labelledby=...
的东西。这是对的吗?我们真的只想要下拉功能,没有额外的可访问性相关的东西。
感谢提供信息。
关于<a>
和aria-labelledby
,请参见w3.org/strong>
[..]目前由标记的咏叹调和由描述的咏叹叹调更加稳健支持将文本内容关联到交互式的子集内容元素截至本文撰写之时,它们无法正确工作links[EDITOR:添加阻塞错误链接?],对嵌入式内容的支持未知,但可以安全地用于表单控件,包括输入类型。
为了有意义,还应该有一个元素aria-labelledby
地址,如
<a href="#" aria-labelledby="meaningless">link</a>
<span id="meaningless">click here</span>
显然,<a>
-标签是交互式的,但有自己的标签。
至于role="button/menu"
,我找不到确切的文档,但我认为"发明"新的角色类型(如button/menu
)是不合法的。只有标准角色是合法的。阅读器应该如何解析按钮/菜单?即使它分裂了,这两个角色也不兼容。请参阅此w3推荐表,了解在不同情况下如何以及何时使用角色属性。
我个人的结论是:完全同意你的观点,约书亚·穆海姆-role='button/menu'
和aria-labelledby=
在这种特殊的背景下是浪费时间。