如果HTML元素具有role=“button”,那么它是否也应该具有属性“name”

如果HTML元素具有role=“button”,那么它是否也应该具有属性“name”,html,accessibility,wai-aria,Html,Accessibility,Wai Aria,如果HTML5元素需要role=button属性以确保可访问性审核成功标准4.1.2[名称、角色、值]…中的成功结果,div在UI中充当按钮,那么它是否还需要有效的Name属性,该属性通常对div无效 如果答案是否-我可以添加什么其他辅助功能友好属性来描述div按钮并满足标准?简单的标题属性或aria标签?无法添加属性名称 按钮应始终具有可访问的名称。对于大多数按钮,此名称将与按钮内的文本相同。在某些情况下,例如对于图标按钮,可以通过aria label或aria labelledby属性提供可

如果HTML5元素需要role=button属性以确保可访问性审核成功标准4.1.2[名称、角色、值]…中的成功结果,div在UI中充当按钮,那么它是否还需要有效的Name属性,该属性通常对div无效

如果答案是否-我可以添加什么其他辅助功能友好属性来描述div按钮并满足标准?简单的标题属性或aria标签?

无法添加属性名称

按钮应始终具有可访问的名称。对于大多数按钮,此名称将与按钮内的文本相同。在某些情况下,例如对于图标按钮,可以通过aria label或aria labelledby属性提供可访问的名称

请参阅此处的详细信息:

的name属性不存在,无法添加

您将需要aria标签来提供一个可访问的名称

但是,如果您只是想通过SC 4.1.2考试,那么您可能采用了错误的方法。事实上,如果您无法在屏幕阅读器中测试aria标签,以确认它是否按您希望的方式工作,那么您就是在编写清单,而不是真正帮助用户

如果是这样的话,那么你可能应该放弃你的工作,而是从最正确的工作元素开始

一个好的经验法则是,不要让自己处于通过角色更改元素默认语义的情况下

有三个元素已经在那里,可以做你想要的第一。如果您的问题没有上下文,请提供一些关于何时使用的一般提示。 如果用户正在更改当前页面上的状态,请使用。 如果用户正在提交表单,请使用或。 我警告不要更改具有role属性的元素的默认角色,因为这最终可能会导致某些辅助技术的混乱和潜在冲突。这些也违反了ARIA的使用规则

还可以考虑键盘体验。如果您所做的只是更改一个元素的角色,那么您还必须提供所有脚本以允许它作为新元素

按enter键可以触发超链接。但按enter键或空格键可以触发true。当超链接具有焦点且用户按下空格键时,页面将滚动一屏。一些辅助技术的用户会期望基于所使用元素的行为

我认为还值得一提的是,空格键触发的事件只有在按键释放时才会触发,而使用Enter键会在按键释放前立即触发事件


因此,请使用上面的列表从任务的正确元素开始,然后将其样式设置为您想要的样子。

我认为最初的问题是因为对WCAG 4.1.2名称、角色和值的含义有些混淆

名称属性在上确实无效。name=用于命名对象,以便可以在javascript中引用该对象。它与可访问性无关

4.1.2中的名称是指屏幕阅读器和其他辅助技术将调用的对象。对于按钮,通常是按钮上显示的文本。对于输入字段,它通常是字段的标签。如果您有一个,那么正如其他人所指出的,aria标签就是您命名对象的方式

当焦点转到对象时,大多数屏幕阅读器将读取对象的名称/标签、角色按钮、复选框、组合框、表等,以及对象的值或状态(如果适当的话)输入、组合框、复选框状态


这三条信息由眼睛迅速确定,基本上为你提供了你需要知道的关于一个物体的所有信息。同样的信息也应该出现在辅助技术中。

感谢@aardrian的帮助解释,我应该为我的问题添加更好的上下文:div是一个标记元素,在一个地图中,所以它是作为div元素预先构建的,虽然我可以用属性进行补充,但我现在不能更改它。我同意你的观点,从最适合这份工作的要素开始。接下来,我为另一个元素写了这篇文章:根据HTML5,元素不接收name属性。可以有,但名称不是一个。你可以很快地测试这个。