CSS: link и: посещенные псевдоклассы - соответствуют ли веб-браузеры спецификации? - PullRequest
10 голосов
/ 17 октября 2011

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

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

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

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

Внизу страницы есть примечание, в котором говорится:

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

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

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

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

Ответы [ 2 ]

2 голосов
/ 17 октября 2011

Линия,

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

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

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

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

0 голосов
/ 17 октября 2011

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

...