“有没有办法 *知道* 什么时候……?”
这里总会有一段停顿。客户知道他们想问什么,我也知道他们想问什么,但把这个问题用语言表达出来——说出来——却变得出奇地困难。
在提问之前的片刻,这是一个纯粹的技术问题——与“当用户在手机上时,我们是否可以做 *这个* ”没有什么不同。但总会有一段停顿,因为这个问题并不容易问出口;不像之前关于浏览器和连接速度的所有其他问题。诸如“在辅助浏览环境中”这样的短语,不像“在手机上”、“在 Internet Explorer 中”或“在缓慢的网络连接中”那样容易脱口而出。前者,好吧,那是 *我* 会说的话——一个完全属于无障碍顾问领域的短语。后者是客户可以理解的。他们有手机,他们使用过其他浏览器,他们遇到过缓慢的网络连接。
“有没有办法 *知道* 什么时候……用户正在使用像屏幕阅读器这样的东西……?”
一个简单的问题引出一个复杂的答案,这几乎是与任何 Web 开发人员交流的标准内容。很长一段时间以来,这个答案一直是与这种常态相悖的令人耳目一新的变化:“不,我们不能。”
问题是,我会说,从 *技术* 上讲是不可能的;你看,计算机无法以这种方式互相交流。通常,这里会有一种明显的解脱:“不”针对 *技术* 部分;“不”针对 *计算机* 部分。当然,这正是他们想要问的。我真心相信这一点。
即使我们可以,我也会解释说,我们并不真正 *想* 这样做。以这种方式修改我们的代码库会给维护人员带来 *更多* 负担,而不是更少。这里有一个与“当他们在手机上时”的对话很容易类比;我们肯定已经谈过这个话题。我们永远无法确定用户的浏览环境,而做出假设只会让 *我们* 和我们的用户陷入困境。每当添加或更改功能、组件或新设计处理方式时,我们都会不得不就如何将其转化为“无障碍”体验进行所有相同的讨论。如果这些功能本身并不重要,那么它们值得拥有吗?如果这些功能是必不可少的——那么,我们仍然需要找到一种方法让它们在两种情况下都正常工作。
乍一看,这似乎对我们的用户来说是一个诱人的选择:一方面是功能齐全的完整网站,另一方面是完全无障碍的替代体验。不过,即使是最轻微的检查也会让它崩溃:如果功能齐全的网站无法访问,那么无障碍的网站就不会功能齐全。通过选择让“无障碍体验”偏离“真实网站”,我们最终会在这两个定义之间划出更清晰的界限,并且我们让“无障碍体验”更像是一个事后诸葛亮——受到限制,并且令人沮丧地与“真实”网站不同步,就像许多专门的移动网站很快变得那样。
这里永远不会有任何分歧。再说一遍:这是可以理解的。我们都发现自己不可避免地选择使用某个网站的“移动版”。我们以前作为用户体验过,我们以前作为开发人员犯过这些错误。我们现在知道得更多了。
但这并不是一个纯粹的技术问题。这不像浏览器功能和屏幕尺寸那样简单——一个是特权浏览环境,另一个是另一个。技术问题很容易解决。在提问过程中——在犹豫、停顿和卡住的单词中——原本是一个平淡无奇的开发问题,变成了一个更加令人不安的事情。因为 *确实* 有一个合适的词。
“我们有没有办法 *知道* 用户是否有残疾?”
轻松的“不”让人感觉很振奋;这是一种逃避责任的方式。针对一个非常令人不安的问题,回答“没关系;做不到”对提问者和回答者来说都是一种意想不到的安慰。同样,这里也有一种明显的解脱——“不”针对 *技术* 部分;“不”针对 *计算机* 部分。当然,这正是他们想要问的。
我们不再拥有那个轻松的答案。在 iOS 12.2 和 macOS 10.14.4 中,Apple 的 VoiceOver 首选项中出现了一个切换开关,无害地标记为“辅助功能事件”。它没有大张旗鼓地推出——除了在 Apple 的iPhone 用户指南中简要提及——我们仍然不确定它的用途。对该功能背后意图的最慷慨的解释是,它是在与“UA 字符串”样式标识符相同的意图下开发的,该标识符用于通过 VoiceOver 浏览的用户。
我们确实知道这一点:当启用此设置时——默认情况下是启用的——您的浏览器会识别您正在使用 VoiceOver 来帮助您浏览网页。如果您正在使用 Apple 的 VoiceOver,那么您的手机和电脑都会将您假定的残疾广播到整个互联网,除非您明确告诉它停止。
2019 年 5 月更新:他们撤回了它。
如果您对这种变化不感到愤怒,那么您就应该愤怒——不仅是因为它对用户意味着什么,还因为它给您带来了什么。Apple 让您背负了这样的认知,现在,*是的*,您 *可以* 知道用户是否残疾。我们 *可以* 利用这些信息提供一个有限的网站替代版本,我们 *可以* 非常轻松地将保护类别的人员加入其中。一旦我们选择开始监听“辅助功能事件”,那么我们就可以 *捕获* 这些信息,就像任何其他广播到网络的信息一样。用户的残疾可以而且将会简化为单个数据点——一个冷冰冰的、非个人的 true
,不可避免地绑定到他们的姓名,存储在数据库中,也许注定要被出售、泄露、传递给保险公司,简化为有针对性的营销机会。所有这些都在包容性的名义下进行。
在某个时候,负责“辅助功能事件”功能的开发人员肯定被问及是否可以实现这样的功能。他们的回答是“可以”。我不怀疑他们的初衷。我同样肯定的是,在那一刻,它 *感觉* 像是正确的答案;一个针对技术问题的技术解决方案,一个简单的浏览环境问题。
总有一天——我相信,在不久的将来——我会被问到类似的问题。它将被犹豫地、断断续续地问出来。停顿声将听起来非常熟悉。我将不再拥有技术不可能带来的轻松、熟悉的安慰——没有简单的“不”来让我免于我一直应该与客户进行的令人不快的对话。现在,从技术上讲,我无法知道用户是否正在使用“像屏幕阅读器这样的东西”。我——我的客户、他们的数据库、他们的组织、他们的母公司、他们的合作伙伴、他们的风险投资资助者、他们的广告商等等,直到无穷—— *绝对* 可以知道用户何时残疾。
但我不会参与帮助传播 Apple 开发人员犯下的错误。我会让我的答案沉重而令人不舒服地停留在空中:不。不是因为我们 *不能*——我们能。不过,不是因为我们 *不应该*,不,我们仍然不应该。不——现在,我会允许这个词变得像我一直想要的那样粗俗,因为我再也没有“好吧,从技术上讲”的冷冰冰的安慰来躲藏。
不.
抱歉。为什么这不好?当然,开发人员现在可以响应有无障碍问题的人的需求,这是一件好事吧?
这不好,因为开发人员不是设计和构建一个对所有人都有效的界面,而是会构建两个单独的界面,而且大多数情况下,无障碍版本将是一个简化的基本版本,永远不会得到维护,因为开发人员很可能会忘记它。
开发人员还会倾向于让无障碍版本走向极端,并且基本上假设该界面中的每一种残疾。“您使用的是屏幕阅读器吗?好吧,您可能还需要打开高对比度模式”。
除了之前提到的广告之外,虽然在表面上,收集数据用于分析目的似乎是可以的,但它很快就会成为一种将用户隔离的系统方法,并试图从数量上证明为使用这些工具和设置的人提供糟糕体验是合理的。
这是因为我们应该已经响应用户的需求。我们不应该需要被提示来使事物变得无障碍。
考虑一下建筑的类比。我们不应该仅仅因为我们看到有人可能无法使用楼梯,就在建筑物的前面楼梯上放一个斜坡。我们应该永久地在那里放一个斜坡。
有几个原因导致这成问题。首先也是最重要的是,互联网是残疾人可以独自存在,而不必担心世界以不同方式对待他们的少数几个地方之一。其次,作为开发人员,我们的工作是构建对每个人都普遍无障碍的体验,而这实际上是我们必须努力做错的事情。
语义 HTML、对颜色对比度、字体大小、选项卡顺序和内容流等内容的适当思考,都是有助于使网站无障碍的因素。现实情况是,我们不应该依赖于是否知道某人是否正在使用屏幕阅读器来为他们提供良好的体验。
这看起来像是一个功能,对吧?就像现在我终于可以为有不同能力的人创建单独的定制体验了。我理解你的意思。
现在我们有能力为某些人开个侧门,而以前每个人都必须从前门进来。做出这些决定的人,比如项目经理、利益相关者和开发人员,很可能是健全人。这意味着健全人会要求有其他能力的人从这扇侧门进来。这感觉很恶心。
互联网及其中的每一个网站都应该对所有人开放。就是这样。
“if (personDisabled) { print crappierSite }”是一个危险的滑坡。
无障碍性必须作为默认值嵌入,而不是作为事后诸葛亮。
此外,如果那个人使用的是 Android,而不是 Apple 呢?
如果 Apple 用户禁用了该设置呢?
而且这甚至还没有涉及到更令人不齿的隐私和监控问题。
这些信息可能会(而且很可能会,因为人类都是垃圾)落入坏人之手。
健康保险可能会收取额外的费用,雇主可能会使用这些信息来选择他们认为(真是讨厌)“更有能力”的未来雇员等等。这可以用于有针对性的广告,甚至可以用于政治竞选。
这是最糟糕的个人资料划分。
现在,开发者们不能再否认了:确实存在着残疾用户,他们也会访问我们的网站。当你的网站访问者中有低于平均水平的残疾人时,这是因为网站主题本身还是你的网站本身做得不好?终于可以开始责怪自己了,而不是责怪残疾人了。
一个不太恰当的类比:如果开发者能够了解用户在他们的网站上激活阅读模式的频率(就像我为这篇文章所做的那样)?或者他们喜欢的缩放比例是多少(我:在css-tricks.com上为110%)?他们应该创建一个单独的简化可读性版本吗?不!最好考虑让默认网站更具可读性。
你有责任消除障碍,而不是拒绝访问“真实事物”。意识到每个人都或多或少地有残疾,至少是暂时性的 - 没有开和关。并且要确保你不会认出所有残疾 - 线上和线下。成为一个为所有用户代言的开发者。
补充正在进行的对话 - 我最近观看了一段视频,一个男人向一群开发者解释了web 3.0,他的主要观点在这里也适用。
停止考虑你当前的问题,并思考你的“解决方案”将对所有人的网络未来产生什么影响。在那次演讲中,那个人更多地谈论了隐私和安全。这也完全适用于无障碍。
我们今天正在构建的工具将塑造未来几十年的工具。如果我们以这样一种方式构建网络,它会使某人处于劣势。
这将在未来几十年继续下去,伤害数百万甚至数十亿人。
如果我们以这样一种方式构建网络,它从一开始就对每个人都有益,防止隔离,同时构建工具,让每个人更容易获得更好的体验。那么我们将为所有人构建一个更好的网络,而不仅仅是那些拥有完美视力、听力、运动功能、没有癫痫等的人的30%或更少。
感谢你撰写这篇文章,也感谢你们中许多人发表了富有思想和见解的回应。我知道盲人社区内部对这个话题有很多来回讨论。我最近听到的是,NFB接受了苹果的解释,即默认开启的开关实际上并不能识别用户,因为另一个关于事件的设置也必须开启。我不确定是否同意。有人从苹果那里听到过任何有意义的解释吗?
作为一名工程师和屏幕阅读器用户,我非常警惕屏幕阅读器检测的隐私问题。也就是说,重要的是要正确理解苹果设备中的这个新功能,以及在正确的语境中。
可访问事件(如accessibleClick或accessibleFocus)仅在辅助技术 (AT) 运行时触发。这使得可以检测到 AT 是否已启用,但不能检测到 AT 的类型。
因此,侦听这些事件不会告诉你屏幕阅读器(与任何其他类型的 AT 相比)是否正在运行。这限制了可以根据此信息做出的设计选择。
还值得注意的是,虽然可访问事件在操作系统中默认启用,但目前在 Safari 中没有启用。用户可以选择执行此操作,如果他们愿意,但它不是默认启用的。
苹果承认这些事件是一个实验性功能。它们最初是在可访问对象模型 (AOM)规范的早期版本中提出的,但由于我和其他人提出的隐私问题,后来被删除了。
感谢你的帖子。我同意。
我们应该响应用户的声明偏好。而不是他们如何使用技术!
我们需要开发良好的个性化解决方案来支持偏好,例如我更喜欢键盘访问而不是指针,我不想要自发声应用程序,我想要易于阅读的内容,没有动画。
看起来苹果将在 iOS12.3 中删除可访问性事件开关。
看起来此功能仍然可用,但现在它位于 Safari > 高级 > 实验性功能 > AOM 下
https://support.apple.com/en-us/HT209655
据我所知,此功能的论点是实现与本机应用程序的奇偶校验,这些应用程序已经可以访问特定于可访问性的事件。即,“accessibilityActivate(): 当 VoiceOver 用户双击所选元素时,可访问性系统会调用此方法。”
https://developer.apple.com/documentation/objectivec/nsobject/1615165-accessibilityactivate#discussion
https://developer.android.com.cn/reference/android/view/accessibility/AccessibilityEvent.html#TYPE_VIEW_CLICKED
但是,应用程序确实必须经过手动审查过程,其中包括以下指南
(vi) 从 HomeKit API、HealthKit、Consumer Health Records API、MovementDisorder API、ClassKit 或从深度和/或面部映射工具(例如 ARKit、Camera API 或 Photo API)收集的数据不得用于营销、广告或基于使用的挖掘,包括第三方。了解有关实施 CallKit、HealthKit、ClassKit 和 ARKit 的最佳实践。
https://developer.apple.com/app-store/review/guidelines/#data-security
除了相机/照片之外,所有这些 API 都不向网络公开。
+1 关于这篇写得很好的文章,Mat。
对于习惯以他们(相同)的方式做事的设计师来说,无障碍性可能看起来像是一种负担,但一旦你深入了解它,它就会变成一种祝福。
无障碍性迫使你更有同理心,(最终)描述事物(据说这是编程中最困难的事情之一),并且还有额外的好处是让你的页面对搜索引擎友好,并且通过让每个人参与其中来获得更广泛的受众/市场份额。
还记得已故的史蒂夫·乔布斯决定杀死 Flash 时(在设计界)引发的喧嚣吗?
我认为,与其全局设置,不如将其作为权限 API 的一部分,这样你就可以获得每个网站的设置。