“指针输入的目标尺寸至少为 24×24 CSS 像素,以下情况除外:”这就是成功标准 2.5.8“目标尺寸(最低)”在列出例外情况之前的全部内容。1它属于 WCAG 2.2(W3C 于 2024 年 12 月 12 日发布的推荐标准)的 AA 级,并附有五项例外。1其中一项“内联”例外,决定了该规则如何适用于句子中的广告。2在谈到这项例外之前,还有一个更简单的问题:手机读者用来操作页面的指针无法悬停。
悬停是桌面端事件,而手机没有这种事件
MDN 关于 hover 媒体特性的页面说,它测试的是“用户的主要输入机制能否悬停在元素上”。3其值“none”涵盖“完全无法悬停或无法方便地悬停”的设备。3给出的例子是手持设备:“许多移动设备会在用户执行不方便的长按时模拟悬停”,而“none”描述的正是这种模拟。3桌面读者将指针停在带下划线的词语上时,发送的是手机没有常规方式可以发送的事件。
发布商文章中已有的词语会显示一条浅色点状下划线,从下划线打开的小面板就是气泡。在桌面设备上,气泡在短暂的悬停延迟后打开,在鼠标移开或按下 Escape 键时关闭;使用键盘时,对获得焦点的词语按 Enter 键即可打开。在手机上,嵌入脚本 adbubbles.js 让第一次点按承担悬停的角色。点按带下划线的词语会打开气泡,点按外部任何地方则会关闭它。只有第二次点按,即点按其中的链接,才会跳转到该链接。因此,对广告词语的第一次触摸只会打开一个面板,而不会离开页面。
在每种设备上,离开页面的信息都是一样的。嵌入脚本发送三种信标。每次页面加载发送一次浏览信标,气泡可见满一秒时发送一次打开信标,点击链接时发送一次点击信标。AdBubbles 不设置 Cookie,不存储标识符,也不收集读者的任何个人数据。
Apple 和 Google 设定的最低标准比 W3C 更大
WCAG 的 24 CSS 像素是最低标准,Apple 和 Google 则以各自的单位公布了更大的数字。Apple 的设计提示告诉设计师:“创建尺寸至少为 44 点 × 44 点的控件,以便能够用手指准确点按。”4Google 的 Android 无障碍指南要求每个触控目标至少为 48×48dp。5它补充说:“48×48dp 的触控目标,无论屏幕尺寸如何,其物理尺寸都约为 9 毫米。”5
有一项研究直接测量了拇指。Parhi、Karlson 和 Bederson 在一款触屏手持设备上测试了二十名参与者,该研究发表于 MobileHCI 2006。6当单次点按目标达到 9.6 毫米时,错误率不再有显著差异。6作者得出结论,单次点按任务的 9.2 毫米和连续点按任务的 9.6 毫米“对于在触屏手持设备上单手使用拇指操作来说应当足够大”。6Google 给出的约 9 毫米,与这两个数字都相差不到一毫米。5
句子中带下划线的词语,正是该标准豁免的目标
“内联”例外的内容是:“目标位于句子中,或其尺寸受到非目标文本行高的限制。”1嵌入脚本标记的带下划线词语,是发布商段落中的文字,使用的是发布商自己的字体和行高。24 像素的最低标准不适用于它。1气泡中的链接则不同:它是面板中的一个控件,在发布商 CSS 无法影响的 Shadow DOM 中渲染。它正是该标准所针对的那类目标,无障碍审核会像对待其他任何控件一样对它进行测量。
“本成功标准的目的是帮助确保目标可以被轻松激活,而不会意外激活相邻的目标,”《理解》文档这样说。2它点名的读者是“灵活性受限的用户以及难以进行精细动作的用户”。2W3C 所描述的危险是相邻,而不仅仅是尺寸。嵌入脚本绝不会在同一段落中放置两个气泡,并且会跳过链接。因此,广告词语永远不会位于一个已经有目标地址的链接之中。
了解这在某个网站上的效果完全免费。设置发布商账户和嵌入脚本完全免费,安装说明介绍了范围设置和每页上限。添加到账户中的网站,会在任何气泡运行之前显示其哪些词语目前可以出售。
Google 已经将误触视为政策问题
Google 面向 AdSense 的广告展示位置政策告诉发布商:“在广告附近放置链接、播放按钮、下载按钮、导航按钮时要小心,因为它们可能会导致误点击。”7Google 发布商政策禁止 Google 投放的广告“覆盖在导航或其他操作项上或与之相邻,并可能导致意外的广告互动”。8两者描述的都是 W3C 目的声明中的那种触摸:本来针对一个目标的触摸,却落在了另一个目标上。政策页面只能要求发布商小心;而格式决定了第一次触摸会做什么。
对于持续产生此类点击的展示位置,Google 的补救措施是“确认点击”。其帮助页面将其描述为“一项 Google Ads 产品功能,为可能产生意外点击的广告展示位置添加确认步骤”。9点按此类广告的读者“将被要求点击一个与操作相关联的按钮(例如‘访问网站’)来确认其访问广告主页面的意图”。9在这些展示位置上,Google 不再将一次点按视为意图的证据,而是在事后再插入一次点按。
气泡的第二次点按是设计使然,而不是补救措施。第一次点按会打开一个面板,其中包含一个“Ad”(广告)标签、一个最多四十个字符的标题,以及一段最多九十个字符的正文。面板中还有广告主的显示域名、一个链接,以及一个小小的“Ads by AdBubbles”标记。第二次点按,即点按链接,才是点击,气泡中的每个链接都带有 rel="sponsored noopener"。
嵌入脚本对第二次点按所知道的,仅仅是它发生了。AdBubbles 将发布商页面上的词语与在当月购买了这些词语的广告主相匹配。看到气泡的读者是打开页面的任何人,嵌入脚本不会将他们中的任何人跟踪到另一个页面或网站,也不向广告主承诺任何效果。点击信标记录的是链接被点击了,而不记录任何原因。
第一次点按无法放大以小字号排版的词语
“内联”例外还意味着,带下划线的词语采用发布商排版所赋予的任何尺寸。假设一个网站在手机上将段落设置为 14 像素、行高 20 像素。那么带下划线的词语高度就不超过其 20 像素的行高,低于该标准为其他目标设定的最低值。它之所以被豁免,只是因为它是内联的。这项例外并没有改变必须落在它上面的拇指。
嵌入脚本为被购买的词语添加点状下划线,而不改变排版的任何其他方面。词语保持发布商自己的字体,使用主题设定的行高。如果发布商的页面在手机上难以点按,那么带下划线的词语也会和周围的链接一样难以点按。范围和每页上限决定了一个页面上有多少带下划线的词语。两者都不会让词语变得比其排版尺寸更大。