«Размер цели для указательного ввода составляет не менее 24 на 24 пикселя CSS, за исключением случаев, когда:» — это весь критерий успеха 2.5.8 «Размер цели (минимальный)» до того, как начинаются исключения.1 Он относится к уровню AA в WCAG 2.2, рекомендации W3C от 12 декабря 2024 года, и содержит пять исключений.1 Одно из них, «Встроенные», определяет, как правило применяется к рекламе внутри предложения.2 Но до исключения возникает более простая проблема: указатель, с которым читатель приходит на страницу с телефона, не умеет наводиться.

Наведение — событие настольного компьютера, а у телефона его нет

Страница MDN о медиафункции hover говорит, что она проверяет, «может ли основной механизм ввода пользователя наводиться на элементы».3 Её значение «none» охватывает устройство, которое «вообще не может наводиться или не может делать это удобно».3 Пример — портативное устройство: «многие мобильные устройства эмулируют наведение, когда пользователь выполняет неудобное долгое касание», и именно эту эмуляцию описывает «none».3 Читатель за компьютером, задержавший указатель на подчёркнутом слове, посылает событие, которое у телефона нет обычного способа послать.

Слова, которые уже есть в статьях издателя, получают лёгкое пунктирное подчёркивание, а небольшая панель, открывающаяся из него, — это пузырь. На компьютере пузырь открывается после короткой задержки при наведении и закрывается, когда курсор уходит, или по клавише Escape; с клавиатуры его открывает Enter на слове в фокусе. На телефоне скрипт встраивания, adbubbles.js, отдаёт роль наведения первому касанию. Касание подчёркнутого слова открывает пузырь, а касание в любом месте вне его — закрывает. Лишь второе касание, по ссылке внутри, ведёт по этой ссылке. Поэтому первое касание рекламного слова открывает панель и не может увести со страницы.

То, что уходит со страницы, одинаково на всех устройствах. Скрипт встраивания отправляет три маячка. Один просмотр отправляется на загрузку страницы, одно открытие — когда пузырь был виден одну секунду, и один клик — когда читатель переходит по ссылке. AdBubbles не устанавливает cookie, не хранит идентификаторов и не собирает персональные данные читателей.

Apple и Google устанавливают больший минимум, чем W3C

24 пикселя CSS в WCAG — это минимум, а Apple и Google публикуют большие цифры в своих единицах. Советы Apple по дизайну говорят дизайнерам: «Создавайте элементы управления размером не менее 44 на 44 пункта, чтобы по ним можно было точно попасть пальцем».4 Рекомендации Google по доступности Android требуют не менее 48x48dp на каждую сенсорную цель.5 Там добавлено, что «сенсорная цель размером 48x48dp имеет физический размер около 9 мм независимо от размера экрана».5

В одном исследовании большие пальцы измеряли напрямую. Пархи, Карлсон и Бедерсон протестировали двадцать участников на портативном устройстве с сенсорным экраном; исследование было представлено на MobileHCI 2006.6 Частота ошибок переставала значимо различаться, как только цель для одиночного касания достигала 9,6 мм.6 Авторы пришли к выводу, что 9,2 мм для задач с одиночным касанием и 9,6 мм для последовательностей касаний «должно быть достаточно для работы большим пальцем одной руки на портативных устройствах с сенсорным экраном».6 Цифра Google в «около 9 мм» отличается от обеих не более чем на миллиметр.5

Подчёркнутое слово внутри предложения — та цель, на которую стандарт делает исключение

Исключение «Встроенные» гласит: «Цель находится в предложении, или её размер иным образом ограничен высотой строки текста, не являющегося целью».1 Подчёркнутое слово, которое помечает скрипт встраивания, — это текст внутри абзаца издателя, набранный собственным шрифтом издателя с его высотой строки. Минимум в 24 пикселя к нему не применяется.1 Ссылка внутри пузыря — другое дело: это элемент управления в панели, отрисованный внутри Shadow DOM, где CSS издателя не может на него повлиять. Это тот вид цели, для которого написан критерий, и аудит доступности измеряет её как любой другой элемент управления.

«Цель этого критерия успеха — помочь обеспечить, чтобы цели можно было легко активировать, не активировав случайно соседнюю цель», — говорится в пояснительном документе (Understanding).2 Пользователи, которых он называет, — это «пользователи с ограниченной ловкостью рук и те, кому трудно выполнять точные движения».2 Опасность, которую описывает W3C, — это соседство, а не только размер. Скрипт встраивания никогда не ставит два пузыря в один абзац и пропускает ссылки. Поэтому рекламное слово никогда не оказывается внутри ссылки, у которой уже есть адрес назначения.

Посмотреть, как это выглядит на конкретном сайте, ничего не стоит. Аккаунт издателя и скрипт встраивания настраиваются бесплатно, а заметки по установке описывают настройку области и максимум на страницу. Сайт, добавленный в аккаунт, показывает, какие его слова сейчас продаются, ещё до запуска первого пузыря.

Google уже считает случайное касание проблемой правил

Правила размещения рекламы Google для AdSense говорят издателям: «Будьте осторожны, размещая ссылки, кнопки воспроизведения, кнопки загрузки, кнопки навигации рядом с рекламой, потому что они могут приводить к случайным кликам».7 Правила Google для издателей запрещают рекламу Google, которая «перекрывает навигационные или другие элементы действий или находится рядом с ними и может приводить к непреднамеренному взаимодействию с рекламой».8 Оба описывают касание из формулировки цели W3C: касание, предназначенное одной цели и попавшее в другую. Страница с правилами может лишь попросить издателя быть осторожным; формат же определяет, что делает первое касание.

Средство Google для мест размещения, которые продолжают давать такие клики, — Confirmed Click. Его справочная страница описывает его как «функцию продукта Google Ads, которая добавляет подтверждение к местам размещения рекламы, которые могут давать случайные клики».9 Читателя, коснувшегося такого объявления, «попросят подтвердить намерение перейти на страницу рекламодателя, нажав кнопку, связанную с действием, например „Перейти на сайт“».9 На таких местах размещения Google больше не считает одно касание свидетельством намерения и задним числом добавляет ещё одно.

У пузыря это второе касание заложено в устройство, а не добавлено как средство исправления. Первое касание открывает панель с пометкой «Ad», заголовком длиной не более сорока символов и текстом не более девяноста символов. В панели также есть отображаемый домен рекламодателя, одна ссылка и небольшой знак «Ads by AdBubbles». Второе касание, по ссылке, — это и есть клик, и каждая ссылка в пузыре содержит rel="sponsored noopener".

О втором касании скрипт встраивания знает только то, что оно произошло. AdBubbles сопоставляет слова на страницах издателя с рекламодателем, который купил их на месяц. Пузырь видит тот, кто открывает страницу, скрипт встраивания ни за кем из них не следует на другую страницу или сайт, и рекламодателю не обещается никакой результат. Маячок клика фиксирует, что читатель перешёл по ссылке, и ничего о том, почему.

Первое касание не может увеличить слово, набранное мелким шрифтом

Исключение «Встроенные» означает также, что подчёркнутое слово получает тот размер, который даёт ему типографика издателя. Предположим, на телефоне сайт набирает абзацы кеглем 14 пикселей с высотой строки 20 пикселей. Тогда подчёркнутое слово не выше своей 20-пиксельной строки — меньше минимума, который критерий устанавливает для других целей. Оно освобождено от требования только потому, что встроено в текст. Ничто в исключении не меняет большой палец, которому нужно на него попасть.

Скрипт встраивания добавляет к купленному слову пунктирное подчёркивание и больше ничего не меняет в наборе. Слово остаётся в собственном шрифте издателя, с высотой строки, заданной темой. Издатель, страницы которого трудно нажимать на телефоне, обнаружит, что подчёркнутые слова так же трудно нажать, как и окружающие ссылки. Область и максимум на страницу решают, сколько подчёркнутых слов будет на странице. Ни то, ни другое не делает слово крупнее шрифта, которым оно набрано.