Html 无法为列表元素找到正确的辅助功能角色 --列表围绕5个li元素(所有可拖动元素)在for循环中运行
在鼠标单击并拖放时,所有拖放li元素都可以正常工作。但当我尝试使用键盘输入以实现可访问性时。。有一个按键功能,在chrome中工作正常,但在IE和Safari中失败。 我尝试过role=“listitem”,但按enter键后,在任何浏览器上都不会发生任何变化。对于需要移动的列表项,我是否可以在浏览器中使用任何特定的角色(基本上需要在要触发的按键事件中,在这里我决定要移动的位置)。我已经尝试过role=“application”这在整个浏览器中都有效,但出现了一些其他可访问性问题。团队中的每个人都建议不要将应用程序用作列表元素的角色(这在我看来也不正确,但这是唯一一个在IE和safari上为按键事件工作的角色)Html 无法为列表元素找到正确的辅助功能角色 --列表围绕5个li元素(所有可拖动元素)在for循环中运行,html,user-interface,accessibility,roles,accessibilityservice,Html,User Interface,Accessibility,Roles,Accessibilityservice,在鼠标单击并拖放时,所有拖放li元素都可以正常工作。但当我尝试使用键盘输入以实现可访问性时。。有一个按键功能,在chrome中工作正常,但在IE和Safari中失败。 我尝试过role=“listitem”,但按enter键后,在任何浏览器上都不会发生任何变化。对于需要移动的列表项,我是否可以在浏览器中使用任何特定的角色(基本上需要在要触发的按键事件中,在这里我决定要移动的位置)。我已经尝试过role=“application”这在整个浏览器中都有效,但出现了一些其他可访问性问题。团队中的每个人
注意:列表项没有任何键盘交互根据我的经验,您永远无法确定
role=“application”
是否会持续工作
角色:role=“listitem”
应在选择一个或多个选项时使用。您所描述的内容听起来更像是用户可以重新排序的常规列表,而不是
。如果我是正确的,你可以考虑使用<代码>角色=“列表”<代码> > <代码>角色=“ListITEM”< /C>儿童>,碰巧,当使用<代码> UL> 时,这是免费的,因此你可以完全跳过role=“listitem”
,因为一些屏幕阅读器会让用户更轻松地逐项阅读。取决于您的需求和偏好
但要解决真正的问题:许多屏幕阅读器(取决于其用户设置)不会将按键传递到浏览器,因此您的onkeypress
不会启动。至少不可靠。这是因为屏幕阅读器严重依赖于键盘快捷键,而这些快捷键可能因用户而异。您不想覆盖这些内容。
但是,当用户按下Enter键时,屏幕阅读器会很高兴地触发一个onclick
事件
当抓取一个项目时,可以考虑添加<代码> ARIa抓取=“true”<代码>和<代码> ARI DROPEFFECT= =“移动”< /代码>。两者都被标记为“不推荐”,因为一种新的表达方式正在酝酿之中,但我认为它们仍然受到一些主要屏幕阅读器的支持,我还没有找到合适的替代方法
:aria dropeffect
角色不会给您任何行为。见“
添加ARIA角色不会使元素的外观或行为与使用辅助技术的人有所不同。它不改变宿主元素的行为、状态和属性,只改变本机角色语义
换句话说,改变角色只会改变屏幕阅读器宣布元素的方式(“语义”)。它不会导致元素的行为有任何不同
还要注意,前面的回答中的以下内容并不十分准确:
“许多屏幕阅读器(取决于其用户设置)不会将按键传递到浏览器”
事实并非如此。根据元素的角色,屏幕阅读器(具有默认设置)可以在虚拟/浏览器/浏览模式和应用程序/表单模式之间切换,从而将按键传递给浏览器(从而传递给元素)。有关执行此操作的角色列表,请参阅“”。尽管该部分讨论了键盘导航以及哪些角色需要您实现箭头键导航,但它本质上告诉您哪些角色将允许按键传递到元素
因此,如果您想要按键,请使用该部分中列出的角色之一。最后,请使用role=“application”
我强烈建议不要使用不推荐使用的ARIA属性。他们的行为将被删除,然后你的应用程序将被破坏。收到。是否正确理解了应该取代这些功能的“未来”WAI-ARIA功能尚不存在?在这种情况下,需要以其他方式提供所有拖放反馈。正确,没有替代的dnd属性。通常,在使dnd可访问时,必须首先使其可通过键盘访问。这通常是通过提供一些其他方法来执行dnd正在处理的操作来完成的。一旦键盘界面完成,通常很容易让它与屏幕阅读器一起工作。
<ul class="draggable-list" role="listbox">
-- list runs in for loop around 5 li elements (all draggable elements)
<li tabindex="0" role="option">
</li>
</ul>