Safari Technology Preview 251: sourceElement у Navigation API. Локальная диагностика: трасса «clicked node → composed path → responsible element → sourceElement»; одно обратимое воздействие, независимый контроль, privacy-stop и пакет для разработчика без реальных данных.
Рабочее определение сбоя
Запрос «как проверить sourceElement события Navigation API для вложенного клика в Safari Technology Preview 251» отвечает на одну самостоятельную боль: sourceElement указывает на самый глубокий вложенный значок, хотя переход инициирует окружающая ссылка или кнопка. Узкий ожидаемый ответ здесь не равен обещанию исправления на любом сайте: нужно различить статус reproduced, not reproduced, unsupported, environment-blocked и unknown на одном фиксированном стенде. Главный соседний эффект, который обязан быть отделён, — обычный Event.target, ошибочно сравниваемый с семантикой Navigation API. Поэтому до любого действия записывают наблюдение словами, а не диагнозом, и заранее задают успешный исход: sourceElement стабильно указывает на ответственную ссылку для обоих внутренних targets, а контрольная кнопка не выдаёт ложный источник. Если результат не повторяется после rollback, первая попытка не считается доказательством.
Граница официальной записи
Официальные Release Notes WebKit датированы 26 августа 2026 года и относят пункт к Safari Technology Preview 251: sourceElement исправлен так, чтобы сообщать ответственный за навигацию элемент, а не самый глубокий clicked element. Прямая первичная запись — 319005@main. Эта пара источников подтверждает наличие и техническую границу change item, но не подтверждает частоту жалоб, поисковый спрос, результат на конкретном устройстве, перенос в stable Safari или причину любого внешне похожего сбоя. Публичная ветка о релизе служит только свежим community lead; её комментарии и поисковый сниппет не используются как evidence. Вывод статьи ограничен указанной функцией и локальным воспроизведением.
Baseline и измеримые признаки
Безопасный fixture: локальная ссылка с вложенными span и svg, где каждый узел имеет уникальный data-marker, но только ссылка отвечает за переход. До canary фиксируются event target, composed path, sourceElement marker, destination URL без query и тип навигации. Каждое поле получает expected, observed, время и отметку валидности, а итоговый рабочий артефакт — трасса «clicked node → composed path → responsible element → sourceElement». Стенд использует только синтетические данные: не сохраняются IP, cookie, токены, Authorization, полные приватные URL, реальные логи, имена профилей, локальные пути и пользовательское содержимое. Если обязательное наблюдение нельзя снять без таких данных, проверку прекращают. Нельзя заменять отсутствующее значение догадкой или добавлять вторую мутацию ради красивого результата.
Независимый контроль
Контроль строится независимо от основной гипотезы: клик по текстовому узлу той же ссылки и отдельная кнопка без navigation behavior. Он должен быть готов до воздействия и отличаться только проверяемым механизмом. Если контроль тоже меняется, результат main-fixture получает статус invalid, потому что возможны общая среда, renderer, cache или тестовая обвязка. Отдельно проверяется риск «обычный Event.target, ошибочно сравниваемый с семантикой Navigation API»: его признак записывают рядом с основным, не смешивая строки. Такой дизайн не доказывает массовость, зато позволяет опровергнуть слишком широкое объяснение и не отправлять команде ложноположительный баг-репорт.
Повторяемый локальный прогон
Единственное воздействие: кликнуть только вложенный SVG тестовым pointer event и затем отменить локальную навигацию обработчиком. Сначала снимается baseline, затем выполняется только это действие, после заранее выбранного settle-события записываются event target, composed path, sourceElement marker, destination URL без query и тип навигации, после чего выполняется полный rollback и повтор baseline. Успех узкой проверки означает: sourceElement стабильно указывает на ответственную ссылку для обоих внутренних targets, а контрольная кнопка не выдаёт ложный источник. Никаких изменений production, чужих страниц, реальных аккаунтов или сетевой маршрутизации процедура не требует. Если rollback не возвращает исходное состояние, прогон помечается invalid даже при убедительном скриншоте; следующий эксперимент начинают только после чистого восстановления.
Пакет для разработчика и критерий остановки
Решение оформляется через трасса «clicked node → composed path → responsible element → sourceElement». PASS допустим только когда выполнено условие «sourceElement стабильно указывает на ответственную ссылку для обоих внутренних targets, а контрольная кнопка не выдаёт ложный источник» и независимый контроль остаётся валиден. NOT REPRODUCED означает лишь отсутствие симптома на этом fixture, а не отсутствие проблемы у всех. Stop-line: остановиться, если framework делегирует клик, заменяет DOM или вызывает navigate() программно. Для handoff достаточно версии TP 251, минимального кода, обезличенных значений «event target, composed path, sourceElement marker, destination URL без query и тип навигации», результатов контроля, статуса rollback и ссылки на 319005@main. Материал не обещает индексацию, позиции, универсальную поддержку, стабильный релиз или автоматическое исправление проекта.
Материал подготовлен редакцией VOne с помощью ИИ; дата, WebKit Release 251, primary commit 319005@main, техническая граница, контроль, обратимость, privacy-stop и роль community lead постатейно проверены 29 августа 2026 года.
Источники и проверка
- WebKit — Release Notes for Safari Technology Preview 251 проверено 2026-08-29
- WebKit commit 319005@main проверено 2026-08-29
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.