可访问的JavaScript:鼠标之外

在上一篇关于SitePoint的文章中 ,我质疑屏幕阅读器是否可以使用AJAX脚本技术,并发现在大多数情况下它们是不可行的 。 这样做令人失望-指出一个问题而无法提供任何答案。 但是我真的别无选择,因为据我所知,没有任何具体的解决方案可以提供。 (尽管自那时以来,其他开发人员进一步扩大了界限 ;特别重要的是Gez Lemon和Steve Faulkner在这一领域所做的工作 。)

但是可访问性并不总是那么困难! 我对这一事实感到非常敏感,因为许多人将其视为一大堆问题,而实际上可访问性只是另一个设计挑战,通常,它比其他任何问题都没有困难或问题。 AJAX是一个特别尴尬的示例。 但是,在大多数情况下,提供可访问性确实并不难。

您不能总是得到想要的东西。 但是如果您有时尝试,您可能会发现,您会得到所需的东西。

—滚石

在本文中,我想对那些尝试使其Web应用程序可访问的用户表示满意。 为了实现这一点,在介绍与设备无关的脚本时,我将讨论与JavaScript可访问性相关的一些更基本的可解决问题。

键盘导航?

我们大多数人在大多数图形界面导航中都使用鼠标,但是有些人不能,因此必须使用键盘来导航。 例如,对于患有手部震颤的人来说,有效使用鼠标所需的精确控制可能根本就不可能。 对于屏幕阅读器等辅助技术的用户,键盘是主要的交互方法。 毕竟,在看不见指针的情况下使用鼠标相当困难!

提供键盘访问权限也可以创建更好的可用性,因为尽管如此,许多可以使用鼠标的人还是喜欢在某些任务或特定时间使用键盘。 这些人通常是高级用户-通常更熟悉计算机工作原理的人员,并期望能够根据需要使用鼠标或键盘与功能进行交互。

如果您不习惯使用键盘浏览网站,请立即尝试! 花一些时间在自己的网站上以及经常访问的其他网站上,以感受一下不用鼠标冲浪的感觉。 发现出现问题的地方,并思考如何避免这些问题。

设备独立!

提到“键盘”访问总是有点误导,因为它不仅仅是我们在谈论的键盘本身。 我们正在谈论尝试提供设备独立性,以便无论用户的交互方式如何,他们都可以使用脚本。

例如,鼠标事件可能根本不会由鼠标生成。 它们可能是由于轨迹球或手持游戏机上的模拟摇杆的移动引起的。 焦点事件可能是由键盘用户使用Tab键导航或由Opera用户使用浏览器的语音控制功能说出的导航命令产生的。

从理论上讲,我们希望能够支持任何交互方式,而不管输入设备如何。 但是实际上,所有这些形式的交互通常可以归结为两种基本类型之一:“鼠标”(单击或移动界面元素)和“键盘”(通过字符输入提供输入或指令)。 这些处理浏览器公开的事件的两个相当谨慎的子集,而忽略了大多数编程事件(加载,错误等)。

三大支柱

我假设您已经非常熟悉鼠标事件的脚本编写,并且仅查看键盘事件的脚本编写。 (如果您需要事件的介绍,以及对现代JavaScript技术在现实世界中使用情况的详细介绍,则可以阅读我的书 。)为此,我要讨论三件事:三件事您可能会说“支柱”,它们共同为设备独立性奠定了基础:

  1. 提供可访问的交互式元素。
  2. 选择适当的触发元素。
  3. 旨在配对脚本挂钩,而不是事件挂钩。 这些术语现在可能没有意义,但是到您阅读完本文时,这些术语才有意义。

我也希望您牢记,当我们经历这些问题时,迎合可及性就是要提供等同性,这与等同性不同。 我们是否为不同的用户提供不同的路径并不一定要紧,只要每个人都有一条通往同等最终结果的路径即可。
稍后,当我们看一些实际的例子时,我们将看到甚至根本不同的方法如何整体上也可以导致等效的结果。

提供可访问的交互式元素

首先,如果要捕获来自键盘的输入,则需要使用可以接受焦点的元素:主要是链接( )和表单控件(