ARIA: aria-keyshortcuts 属性

全局 aria-keyshortcuts 属性用于指明作者实现的、用于激活或聚焦某个元素(element)的键盘快捷键。

描述

键盘快捷键是由一个或多个按键组成的组合,用于告知软件执行预先设定的操作。键盘快捷键使用户无需通过菜单、触摸或鼠标,即可在键盘上调用命令。aria-keyshortcuts 属性定义了为激活或聚焦设置该属性的元素而实现的键盘按键。

aria-keyshortcuts 属性向辅助技术公开了快捷键的存在,以便能够将其告知用户。与所有 ARIA 属性一样,它不会影响页面的功能;键盘行为必须通过 JavaScript 事件处理程序添加。

应用于禁用元素的键盘快捷键也应被禁用。例如,当禁用元素供鼠标用户使用时,请记住也要禁用键盘快捷键用户。

确保所有键盘快捷键都对视障用户可见,并可供辅助技术使用。如果您的应用程序足够复杂,需要使用键盘快捷键(也称为“热键”),请提供应用程序的导览、记录快捷键和其他可访问性功能的“可访问性”页面、快捷键备忘单页面或对话框弹出窗口,或者其他告知用户可用键盘快捷键的方法。此外,还在菜单和工具提示中显示快捷键。

属性值规则

aria-keyshortcuts 属性的值是由空格分隔的按键组合列表,按下这些组合可以激活命令或文本框小部件。每个按键组合包含零个、一个或多个修饰键,后跟一个非修饰键,它们同时按下,并用加号("+")连接。属性值不区分大小写。

有效键盘快捷键的示例包括:

aria-keyshortcuts="A"
aria-keyshortcuts="Shift+Space"
aria-keyshortcuts="Control+Alt+."
aria-keyshortcuts="Control+Shift+'"
aria-keyshortcuts="alt+shift+p control+f"
aria-keyshortcuts="Meta+C Meta+Shift+C"

修饰键是单独按下时没有影响的按键。它们被写为“Alt”、“Control”、“Shift”、“Meta”(Mac 上的 Command 键)或“AltGraph”(Mac 上的 Option 键)。

非修饰键是单独按下时有影响的按键,无论是打印字符、移动焦点,还是在按下时产生键盘事件。打印单个字符的非修饰键包括 Pz. 等字符。

由于加号用于书写按键组合,因此如果用作非修饰键,则写为 plus。其他写出的非修饰键包括空格字符 SpaceTabEnter,以及所有导致操作的字符,如 ArrowUpPageUpEscape

如果您想使用可能引起问题的字符,例如双引号内的双引号字符,请对其进行转义:Control+'

修饰键必须写在每个按键组合的最前面。可能的按键组合包括 Control+PShift+SpaceQ。如果完整快捷键需要按此顺序包含所有这三个组合,则应写为 aria-keyshortcuts="Control+P Shift+Space Q"。当一个按键组合包含多个修饰键时,修饰键的顺序无关紧要,但它们都必须放在非修饰键之前。

这两个属性声明是等效的。

aria-keyshortcuts="Shift+Control+V"
aria-keyshortcuts="control+shift+v"

请注意,文本大小写无关紧要。但非修饰键的顺序很重要。

这两个属性声明无效,因为非修饰键必须放在最后。

aria-keyshortcuts="V+Shift+Control"
aria-keyshortcuts="V+Control+Shift"

列出的按键组合必须是用户需要按下的按键,而不是组合按键的结果。例如,在美国键盘上,如果您需要“@”符号,则按键组合应写为 "Shift+2",而不是 "@""Shift+@"

最佳实践

为了提高您网站和应用程序的可访问性,请遵循一些最佳实践,以确保您的“增强功能”不会对用户体验产生负面影响。请记住,没有 ARIA 比糟糕的 ARIA 更好。

不要覆盖浏览器、辅助技术或操作系统快捷键

在实现键盘快捷键时,请确保不要创建已被浏览器、辅助技术或操作系统使用的快捷键,除非它们用于相同的功能。例如,“Control+P”被大多数用户代理用于启动打印功能。通常,Web 应用程序不应创建“Control+P”快捷键,因为它会取代浏览器功能。也有例外。在打印很常见的 Web 应用程序中,例如电子邮件应用程序或文档编辑器,为应用程序特定的打印流程取代浏览器的“Control+P”打印功能是可以预期的。

除非您正在创建一个生产力应用程序的 HTML 版本,否则您很可能应该避免实现键盘快捷键。虽然覆盖操作系统或浏览器键盘快捷键可能会让非辅助技术用户感到烦恼,但如果您覆盖屏幕阅读器的键盘功能,您可能会完全关闭辅助技术用户的访问权限。如果您必须创建键盘快捷键,请避免使用单字母键盘快捷键和常见的屏幕阅读器键盘快捷键。

考虑语言和键盘差异

请考虑各种可用键盘和不同的键盘语言偏好。修饰键通常用于创建特定语言的常见标点符号和数字字符。例如,当键盘语言偏好设置为法语(法国)时,数字会使用 Shift 键。

不要改用 HTML

aria-keyshortcuts 属性与有问题的 HTML accesskey 属性非常相似,后者为当前元素生成键盘快捷键。当为元素定义 accesskey 时,浏览器会定义修饰键并无需脚本即可处理快捷键。每个浏览器和操作系统组合都有自己针对 accesskey 属性中设定的非修饰键的修饰键。对一种操作系统、辅助技术和浏览器组合有效的方法可能对其他组合无效。而对于 aria-keyshortcuts,修饰键包含在按键组合的属性值列表中,并且必须通过脚本实现功能。

html
<p>
  Press the
  <strong><u>S</u></strong
  >tress reliever to relax!
</p>
<button accesskey="s">Stress reliever</button>

在此示例中,我们还通过突出显示非修饰字符,确保了视觉用户也了解快捷键的存在。

虽然 accesskey 属性的目标与 aria-keyshortcuts 的意图一致,并且可以原生实现,但 accesskey 存在很多问题。由于这些问题,通常建议不要在大多数通用网站和 Web 应用程序中使用 access keys。

除了浏览器支持不佳之外,accesskey 也存在与 aria-keyshortcuts 相同的顾虑。

  • accesskey 值可能与系统或浏览器键盘快捷键冲突,或与辅助技术功能冲突。
  • 某些按键值可能在特定键盘上不存在,尤其是在考虑国际化时。因此,适应特定语言可能会导致进一步的问题。
  • 依赖数字的值可能令有认知障碍的人感到困惑,因为数字与它触发的功能没有逻辑关联。
  • 告知用户快捷键的存在,让他们了解该功能。如果系统缺乏通知用户此功能的方法,用户可能会意外激活快捷键。

<string>

按键组合的空格分隔列表,按下这些组合即可执行操作。

示例

在此示例中,元素上的 aria-keyshortcuts 属性设置为“Alt+Shift+A”。

html
<a href="#content" aria-keyshortcuts="Alt+Shift+A">Skip to content</a>

相关接口

Element.ariaKeyShortcuts

Element 接口的 ariaKeyShortcuts 属性反映了 aria-keyshortcuts 属性的值。

ElementInternals.ariaKeyShortcuts

ElementInternals 接口的 ariaKeyShortcuts 属性反映了 aria-keyshortcuts 属性的值。

相关角色

用于 **所有** 角色。

规范

规范
无障碍富互联网应用程序 (WAI-ARIA)
# aria-keyshortcuts
未知规范

另见