WebAIM -考虑网页的可访问性

键盘可访问性
Accesskey

概述

键盘快捷键对软件设计来说是个好主意,如果有更好的方法让所有用户都能使用键盘快捷键,那么它对网页设计来说也是个好主意。的accesskey属性允许web开发人员为web元素指定特定的键盘快捷键。浏览器和辅助技术的开发者实现accesskey支持的不一致和无效。Web开发人员仍然可以使用accesskey创建键盘快捷键,但是需要考虑很多因素。

键盘快捷键的一般概念

键盘快捷键对所有计算机用户都很有用,因为它们通常允许比鼠标点击更快的交互。所有能力的“超级用户”经常使用键盘快捷键。在残疾人中,失明或有运动障碍的人也经常使用键盘快捷键。

键盘快捷键是大多数操作系统的标准可访问性特征。例如,微软(Microsoft)和苹果(Apple)已经对这些键盘快捷键进行了标准化,使用户无需使用鼠标就可以快速访问菜单和功能。

在Windows中,标准化键盘快捷键的惯例之一是将用作键盘快捷键的字符的字母下划线。在Windows系统中,“File”一词中的字母“F”下划线,提示用户存在键盘快捷键,并指示哪个键激活该快捷键。然而,在网络上,目前还没有定义或指示每页键盘快捷键的标准惯例。

accesskey属性

从HTML 4.0开始accesskey属性可以添加到交互式HTML元素,如链接和表单控件。属性简单地添加到元素中,如下面的例子所示:

< a href = " //www.kanehsu.com/ "accesskey = " w "> WebAIM.org < / >
<表单动作= " submit。htm”方法= " post " >
<标签= "名称" >名称> < /标签
< input type = " text " id =“名称”accesskey = " n ">
< input type = " submit " id = " submitform”accesskey =“s”值= "提交" >
> < /形式

accesskey属性定义到指定目的地的快捷方式。在上面的示例中,“W”accesskey将把用户带到www.kanehsu.com。“N”accesskey将把用户带到文本输入字段,“S”accesskey将提交表单。

好主意执行得不好

不幸的是,关于如何最好地实现键盘快捷键的建议相当模糊。浏览器开发人员、辅助技术开发人员和web内容开发人员被留下去规划他们自己的道路。尽管意图很好,但这种做法未能在用户代理和web开发实践中扎根。

浏览器的实现

浏览器的实现因品牌和操作系统的不同而差异很大,但是accesskey快捷方式背后的基本思想是一致的。用户已经习惯了他们最喜欢的浏览器处理accesskey快捷键的方式,在切换到其他浏览器时可能需要学习新的方法。

击键组合

不同的浏览器使用不同的按键激活accesskey快捷键,如下图所示:

  • 常见的Windows浏览器:转变+Alt+ (accesskey)
    • 在某些浏览器中,Shift是可选的。
  • 常见的Mac的浏览器:控制+选项+ (accesskey)

复制accesskey值

大多数浏览器不支持重复的accesskey值。例如,页面不能有两个快捷方式accesskey = " 1 "。大多数浏览器会忽略其中一个快捷方式。有些浏览器会忽略第一个实例,而其他浏览器会忽略第二个实例。一些循环通过快捷键与每一个连续的accesskey键盘激活。

此外,在HTML5中,一个元素可能有多个accesskeys(例如,< a href = " home.htm "accesskey = " 1 h”回家> < / >)。不同浏览器对多个值的支持也有很大差异。

激活accesskey元素

实现也因激活适当的accesskey键盘组合将做什么而有所不同。有些人只是简单地将焦点设置为具有accesskey的元素(然后用户必须按Enter来激活它),而另一些人则会立即激活它。这取决于元素的类型——链接、按钮和表单控件的行为可能都不同。

屏幕阅读器实现

因为屏幕阅读器的大部分功能依赖于浏览器,所以accesskey的屏幕阅读器实现在很大程度上依赖于所使用的浏览器。例如,使用Internet Explorer的屏幕阅读器的行为方式与Internet Explorer浏览器相同。一些屏幕阅读器会在遇到元素时指示accesskey值。

浏览器的冲突

accesskey这个概念的一个明显问题是,浏览器、操作系统、浏览器扩展等的快捷键和web内容中定义的快捷键之间必然会有冲突。例如,在一个标准的Windows程序中,Alt + F会激活文件菜单。当web开发人员希望使用相同的键盘组合访问web页面的一部分(比如web应用程序中的文件菜单)时,会发生什么情况?用户的浏览器将决定如何管理这种类型的冲突。

在Windows的Internet Explorer、Firefox和大多数其他基于Windows的浏览器中,web页面中的accesskey优先于用户代理的键盘快捷键。在这种情况下,键盘快捷键用户可能会感到困惑和沮丧。Web开发人员不能假定用户知道如何使用accesskey快捷方式,或者知道如何处理accesskey冲突。

屏幕阅读器冲突

accesskey快捷方式最大的问题之一是accesskey可能会覆盖屏幕阅读器的键盘快捷方式,因为屏幕阅读器比标准浏览器有更多的键盘命令。键盘快捷键是屏幕阅读器功能的一个关键组件,因此屏幕阅读器用户可以从正确使用accesskey中受益匪浅。反之,如果屏幕阅读器的键盘快捷键被accesskey快捷键禁用,屏幕阅读器用户可能无法执行重要的屏幕阅读器功能。

在发生冲突的情况下,屏幕阅读器快捷方式通常优先,这意味着accesskey快捷方式被有效地禁用,即使用户仍然可以识别它们。accesskey快捷方式带来的可访问性的好处被丢失了,但是屏幕阅读器的功能完好无损。但是,如果用户想激活accesskey,这可能会令人困惑。

语言问题

是否存在与任何浏览器、辅助技术或操作系统不冲突的击键组合?简而言之,没有。所有标准的击键组合或者已经知道会与现有的软件发生冲突,或者将来可能会与尚未开发的软件发生冲突。如果把外语考虑在内的话,这一点尤其正确。浏览器中的文件菜单并不总是以英语以外的语言命名为“文件”。因此,在设置为使用英语的浏览器中,accesskey快捷方式可能不会导致冲突,但在设置为使用另一种语言时,可能会在同一浏览器中导致冲突。

数字

因为每个字母都被假定与一个web功能相关联,一些可访问性专家主张使用数字而不是字母,以减少键盘快捷键冲突的总体影响。虽然在数量上有较少的潜在冲突,但也不能保证没有冲突。这并不意味着数值超出了限制——它们对许多用户都适用——但是请记住,数字和web页面功能之间并没有标准的关联。用户可能会被键盘快捷键中的数字所迷惑。

用户如何知道accesskey快捷方式是否可用?

accesskey快捷方式最大的问题之一是用户通常不知道它们的存在,并且没有标准的方式来通知它们。与Windows环境不同的是,它在菜单中强调键盘快捷键的字母,没有任何惯例或“经验法则”来提醒用户accesskey快捷键的存在。开发人员可以选择模仿Windows环境的约定,也可以创建自己的约定。所有这些努力,虽然出发点是好的,但都没有达到理想。

理想的情况是让用户代理(浏览器、屏幕阅读器等)为用户识别可用的accesskey快捷方式。一些屏幕阅读器已经这样做了,但这对有视力的键盘用户没有帮助。选择使用accesskey快捷方式的开发人员必须通知用户accesskey快捷方式可用。实现这一点的方法是:

  • 在激活accesskey的单词内的字母下划线,例如:Next页面。
    • 优点:容易实现;一些用户将识别这个约定。
    • 缺点:并非所有用户都能识别此约定;不是所有的用户都知道使用哪种键盘组合(是Alt、Ctrl、Shift等吗?)
  • 将accesskey放在括号中,例如:下一页(accesskey: N)
    • 优点:容易实现;所有用户都可以阅读文本。
    • 缺点:改变网页内容的布局和外观和感觉;并非所有用户都能识别此约定;并不是所有的用户都知道使用哪种击键组合。
  • 根据所使用的浏览器和操作系统,将准确的击键组合放在圆括号中,例如:Next Page (Alt + N)
    • 优点:确切地告诉用户要使用哪种击键组合。
    • 缺点:需要使用JavaScript或服务器端脚本的浏览器检测脚本;改变web内容的布局和外观和感觉。
  • 在单独的页面上创建accesskey快捷方式列表,并从站点上使用accesskey快捷方式的所有页面链接到它们。
    • 优点:把所有的键盘快捷键放在一个地方,方便参考。
    • 缺点:用户必须到一个单独的页面学习键盘快捷键;需要在每个页面上添加一个额外的链接;用户可能仍然不知道使用哪种键击组合(Alt, Shift,等等),除非它在外部文件中解释(可能是一个长而笨拙的文件)。
  • 使用更复杂的CSS和/或浏览器检测方法,当元素收到焦点或鼠标悬停在它们上面时,公开accesskey快捷键。
    • 优点:不会干扰视觉布局;如果同时使用CSS和浏览器检测,则可以通知用户所需的确切击键组合。
    • 缺点:需要高级CSS和/或浏览器检测脚本的工作知识。
  • 使用上述方法的某种组合。

是否应该使用Accesskey ?

这个问题的答案并不容易。由于实现中存在许多问题,许多开发人员选择完全避免它们——甚至是那些坚定的可访问性倡导者的开发人员。即使如此,如果他们被小心地实现,accesskey快捷方式对一些用户是有益的。例如,在“封闭环境”的web应用程序中,accesskeys可以使重复的进程更加高效。底线是:有些用户会受益,有些则不会,有些甚至会处于不利地位。