Summary

  • В рабочем проекте W3C от января 2010 года описана утечка истории через :visited, запросы селекторов и getComputedStyle(). Mozilla подготовила защиту Firefox, при которой читатель видит цвет посещённой ссылки, а скрипт получает значения непосещённой.
  • Chrome 136, выпущенный в апреле 2025 года, привязал посещённость к URL назначения, верхнеуровневому сайту и происхождению фрейма. Чужой сайт больше не наследует фиолетовый след клика в другом месте; собственные страницы сайта составляют ограниченное исключение.

Фиолетовая ссылка говорит читателю: «сюда ты уже заходил». Чужая страница может разложить перед браузером набор адресов и выяснять, какие из них получили цвет. Рабочий проект Selectors API Level 2, опубликованный W3C 19 января 2010 года, прямо назвал это похищением истории. Он перечислил запросы селекторов, getComputedStyle() и пример с querySelectorAll(":visited"). Это был технический сигнал тревоги, а не таблица поведения всех браузеров.

Убрать фиолетовый цвет было бы легко, но вместе с ним исчезла бы полезная подсказка. В объяснении Mozilla от марта 2010 года описывалась разрабатываемая для Firefox защита. Посещённая ссылка могла отличаться цветом; различия в размере, положении или загрузке ресурсов ограничивались. Расчёт размещения для двух состояний делали более похожим. Когда скрипт страницы спрашивал getComputedStyle(), ответом становились значения непосещённой ссылки. Человек видел память браузера, а автоматический расспрос получал чистый бланк.

Однако память о посещении всё ещё была общей для многих страниц. Chrome в апреле 2025 года объяснил старый эффект на простом маршруте: пользователь переходит с A на B; позже страница C показывает ссылку на B, и та тоже выглядит посещённой. C не видел перехода с A. Цвет всё равно доносил ему часть чужого путешествия.

В выпуске Chrome 136 от 29 апреля 2025 года память :visited получила границы. Вместе с адресом назначения Chrome учитывает верхнеуровневый сайт и происхождение фрейма, откуда был сделан переход. A может показывать свой переход к B как посещённый; C больше не получает фиолетовый след от A. Для ссылок на собственные страницы сайта предусмотрено узкое исключение, поскольку сайт и так наблюдает посещения своих страниц.

Рабочий проект W3C Selectors Level 4 от января 2026 года перечисляет возможные способы защиты: вовсе не сопоставлять :visited, скрывать данные стиля от скриптов либо показывать посещённость только там, где источник сам мог узнать о переходе. Приложение описывает запись из цели, исходного происхождения и верхнеуровневого сайта. Проект показывает направление стандартизации, не превращая разные реализации в одну выдуманную дату перехода.

Фиолетовый цвет остался в интерфейсе. Firefox закрыл к нему измерительный доступ для страницы; Chrome 136 перестал раздавать каждому сайту общую память. Читатель по-прежнему узнаёт пройденный путь. Соседней странице больше не передают полный рассказ за чашкой чая.