Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 无法为列表元素找到正确的辅助功能角色 --列表围绕5个li元素(所有可拖动元素)在for循环中运行_Html_User Interface_Accessibility_Roles_Accessibilityservice - Fatal编程技术网

Html 无法为列表元素找到正确的辅助功能角色 --列表围绕5个li元素(所有可拖动元素)在for循环中运行

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”这在整个浏览器中都有效,但出现了一些其他可访问性问题。团队中的每个人

在鼠标单击并拖放时,所有拖放li元素都可以正常工作。但当我尝试使用键盘输入以实现可访问性时。。有一个按键功能,在chrome中工作正常,但在IE和Safari中失败。 我尝试过role=“listitem”,但按enter键后,在任何浏览器上都不会发生任何变化。对于需要移动的列表项,我是否可以在浏览器中使用任何特定的角色(基本上需要在要触发的按键事件中,在这里我决定要移动的位置)。我已经尝试过role=“application”这在整个浏览器中都有效,但出现了一些其他可访问性问题。团队中的每个人都建议不要将应用程序用作列表元素的角色(这在我看来也不正确,但这是唯一一个在IE和safari上为按键事件工作的角色)


注意:列表项没有任何键盘交互

根据我的经验,您永远无法确定
role=“application”
是否会持续工作

角色:
role=“listitem”
应在选择一个或多个选项时使用。您所描述的内容听起来更像是用户可以重新排序的常规列表,而不是
。如果我是正确的,你可以考虑使用<代码>角色=“列表”<代码> > <代码>角色=“ListITEM”< /C>儿童>,碰巧,当使用<代码> UL> 时,这是免费的,因此你可以完全跳过角色< /Cord>属性。您还可以继续使用
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>