CSS: ссылка и: посещенные псевдоклассы - это веб-браузеры, придерживающиеся спецификации?

спецификация W3.org CSS содержит следующее (акцент мой):

  • Псевдокласс link: применяется для ссылок, которые еще не были посещены.
  • Приведенный псевдослучайный класс применяется после того, как ссылка была посещена пользователем.

Два состояния взаимоисключающие.

Это означает, что любой стиль, применяемый к селектору :link, должен применяться только к невидимым ссылкам. Однако единственным свойством, для которого это правда, является color. Применение размеров шрифтов, фона и т.д. К селектору :link предназначено для всех ссылок.

На странице есть примечание, в котором говорится:

Примечание. Возможно, авторы стилей могут злоупотреблять псевдонимами: link и: visited, чтобы определить, какие сайты посетил пользователь без согласия пользователя.

Таким образом, UA могут обрабатывать все ссылки как невидимые ссылки или реализовывать другие меры, чтобы сохранить конфиденциальность пользователя во время просмотра посещенных и незатронутых ссылок по-разному.

Однако, насколько мне известно, это относится только к стилям, возвращаемым Javascript, а не к отображению самих стилей.

Здесь сценарий JS, показывающий проблему. Разве браузеры отклоняются от спецификации здесь, или есть что-то, что мне не хватает?

Ответ 1

Линия,

"Таким образом, UA могут обрабатывать все ссылки как невидимые ссылки или реализовывать другие меры, чтобы сохранить конфиденциальность пользователя при разнесении посещенных и незатронутых ссылок по-разному.

Не применимо к стилям, возвращаемым только JavaScript; — это точно так, как кажется. Это означает, что браузеры могут просто полностью игнорировать определенные свойства на :visited (что и происходит в этом случае). Так как font-size увеличит размер содержащего элемент, позволяя другому свойству использовать :visited ссылки, это подрывает другие меры безопасности, реализованные браузером.

Браузер мог бы выбрать пересчет размеров без примененных стилей :visited, если бы это было необходимо. Естественно, это больше работает и менее результативна, чем просто отказ от некоторых свойств. Понятно, что решение было принято на основе того факта, что нет реальной необходимости использовать разные размеры шрифта, фоны и т.д., Чтобы различать посещенные и не связанные ссылки, и, как правило, большинство разработчиков будут придерживаться лишь незначительного изменения цвета.

Нет, они не отклоняются от спецификации, они используют допустимое исключение.

Ответ 2

Из того, что я понимаю из спецификации, браузеры обрабатывают :link как a, чтобы избежать злоупотреблений в статусе посещения. Поэтому с javascript или без него стиль, применяемый ко всем ссылкам, :link, а :visited только перегружает стиль при посещении.