辅助功能事件

Mat Marquis - 2019 年 4 月 11 日

“有没有办法 *知道* 什么时候……?”

这里总会有一段停顿。客户知道他们想问什么,我也知道他们想问什么,但把这个问题用语言表达出来——说出来——却变得出奇地困难。

在提问之前的片刻,这是一个纯粹的技术问题——与“当用户在手机上时,我们是否可以做 *这个* ”没有什么不同。但总会有一段停顿,因为这个问题并不容易问出口;不像之前关于浏览器和连接速度的所有其他问题。诸如“在辅助浏览环境中”这样的短语,不像“在手机上”、“在 Internet Explorer 中”或“在缓慢的网络连接中”那样容易脱口而出。前者,好吧,那是 *我* 会说的话——一个完全属于无障碍顾问领域的短语。后者是客户可以理解的。他们有手机,他们使用过其他浏览器,他们遇到过缓慢的网络连接。

“有没有办法 *知道* 什么时候……用户正在使用像屏幕阅读器这样的东西……?”

一个简单的问题引出一个复杂的答案,这几乎是与任何 Web 开发人员交流的标准内容。很长一段时间以来,这个答案一直是与这种常态相悖的令人耳目一新的变化:“不,我们不能。”

问题是,我会说,从 *技术* 上讲是不可能的;你看,计算机无法以这种方式互相交流。通常,这里会有一种明显的解脱:“不”针对 *技术* 部分;“不”针对 *计算机* 部分。当然,这正是他们想要问的。我真心相信这一点。

即使我们可以,我也会解释说,我们并不真正 *想* 这样做。以这种方式修改我们的代码库会给维护人员带来 *更多* 负担,而不是更少。这里有一个与“当他们在手机上时”的对话很容易类比;我们肯定已经谈过这个话题。我们永远无法确定用户的浏览环境,而做出假设只会让 *我们* 和我们的用户陷入困境。每当添加或更改功能、组件或新设计处理方式时,我们都会不得不就如何将其转化为“无障碍”体验进行所有相同的讨论。如果这些功能本身并不重要,那么它们值得拥有吗?如果这些功能是必不可少的——那么,我们仍然需要找到一种方法让它们在两种情况下都正常工作。

乍一看,这似乎对我们的用户来说是一个诱人的选择:一方面是功能齐全的完整网站,另一方面是完全无障碍的替代体验。不过,即使是最轻微的检查也会让它崩溃:如果功能齐全的网站无法访问,那么无障碍的网站就不会功能齐全。通过选择让“无障碍体验”偏离“真实网站”,我们最终会在这两个定义之间划出更清晰的界限,并且我们让“无障碍体验”更像是一个事后诸葛亮——受到限制,并且令人沮丧地与“真实”网站不同步,就像许多专门的移动网站很快变得那样。

这里永远不会有任何分歧。再说一遍:这是可以理解的。我们都发现自己不可避免地选择使用某个网站的“移动版”。我们以前作为用户体验过,我们以前作为开发人员犯过这些错误。我们现在知道得更多了。

但这并不是一个纯粹的技术问题。这不像浏览器功能和屏幕尺寸那样简单——一个是特权浏览环境,另一个是另一个。技术问题很容易解决。在提问过程中——在犹豫、停顿和卡住的单词中——原本是一个平淡无奇的开发问题,变成了一个更加令人不安的事情。因为 *确实* 有一个合适的词。

“我们有没有办法 *知道* 用户是否有残疾?”

轻松的“不”让人感觉很振奋;这是一种逃避责任的方式。针对一个非常令人不安的问题,回答“没关系;做不到”对提问者和回答者来说都是一种意想不到的安慰。同样,这里也有一种明显的解脱——“不”针对 *技术* 部分;“不”针对 *计算机* 部分。当然,这正是他们想要问的。

我们不再拥有那个轻松的答案。在 iOS 12.2 和 macOS 10.14.4 中,Apple 的 VoiceOver 首选项中出现了一个切换开关,无害地标记为“辅助功能事件”。它没有大张旗鼓地推出——除了在 Apple 的iPhone 用户指南中简要提及——我们仍然不确定它的用途。对该功能背后意图的最慷慨的解释是,它是在与“UA 字符串”样式标识符相同的意图下开发的,该标识符用于通过 VoiceOver 浏览的用户。

我们确实知道这一点:当启用此设置时——默认情况下是启用的——您的浏览器会识别您正在使用 VoiceOver 来帮助您浏览网页。如果您正在使用 Apple 的 VoiceOver,那么您的手机和电脑都会将您假定的残疾广播到整个互联网,除非您明确告诉它停止。

2019 年 5 月更新:他们撤回了它

如果您对这种变化不感到愤怒,那么您就应该愤怒——不仅是因为它对用户意味着什么,还因为它给您带来了什么。Apple 让您背负了这样的认知,现在,*是的*,您 *可以* 知道用户是否残疾。我们 *可以* 利用这些信息提供一个有限的网站替代版本,我们 *可以* 非常轻松地将保护类别的人员加入其中。一旦我们选择开始监听“辅助功能事件”,那么我们就可以 *捕获* 这些信息,就像任何其他广播到网络的信息一样。用户的残疾可以而且将会简化为单个数据点——一个冷冰冰的、非个人的 true,不可避免地绑定到他们的姓名,存储在数据库中,也许注定要被出售、泄露、传递给保险公司,简化为有针对性的营销机会。所有这些都在包容性的名义下进行。

在某个时候,负责“辅助功能事件”功能的开发人员肯定被问及是否可以实现这样的功能。他们的回答是“可以”。我不怀疑他们的初衷。我同样肯定的是,在那一刻,它 *感觉* 像是正确的答案;一个针对技术问题的技术解决方案,一个简单的浏览环境问题。

总有一天——我相信,在不久的将来——我会被问到类似的问题。它将被犹豫地、断断续续地问出来。停顿声将听起来非常熟悉。我将不再拥有技术不可能带来的轻松、熟悉的安慰——没有简单的“不”来让我免于我一直应该与客户进行的令人不快的对话。现在,从技术上讲,我无法知道用户是否正在使用“像屏幕阅读器这样的东西”。我——我的客户、他们的数据库、他们的组织、他们的母公司、他们的合作伙伴、他们的风险投资资助者、他们的广告商等等,直到无穷—— *绝对* 可以知道用户何时残疾。

但我不会参与帮助传播 Apple 开发人员犯下的错误。我会让我的答案沉重而令人不舒服地停留在空中:不。不是因为我们 *不能*——我们能。不过,不是因为我们 *不应该*,不,我们仍然不应该。不——现在,我会允许这个词变得像我一直想要的那样粗俗,因为我再也没有“好吧,从技术上讲”的冷冰冰的安慰来躲藏。

.