10

W3.org CSS 规范声明如下(强调我的):

  • :link 伪类适用于尚未访问的链接。
  • :visited 伪类在用户访问链接后应用。

这两种状态是相互排斥的。

这意味着应用于:link选择器的任何样式都应仅应用于未访问的链接。但是,唯一的属性似乎是color。将字体大小、背景等应用于:link选择器以所有链接为目标。

页面下方有一条说明:

笔记。样式表作者可能会滥用 :link 和 :visited 伪类来确定用户在未经用户同意的情况下访问了哪些站点。

因此,UA 可以将所有链接视为未访问的链接,或实施其他措施来保护用户的隐私,同时以不同的方式呈现已访问和未访问的链接。

但是,据我所知,这仅适用于 Javascript 返回的样式,不适用于样式本身的显示。

这是一个显示问题的JS小提琴。浏览器是否偏离了这里的规范,还是我遗漏了什么?

4

2 回答 2

2

线,

“因此,UA 可以将所有链接视为未访问的链接,或实施其他措施来保护用户的隐私,同时以不同的方式呈现已访问和未访问的链接。”

不适用于仅由 JavaScript 返回的样式 - 它与听起来完全一样。这意味着浏览器可能会完全忽略某些属性:visited(这就是在这种情况下发生的情况)。由于这font-size会增加包含元素的大小,因此允许:visited链接的属性不同会破坏浏览器实施的其他安全措施。

如果需要,浏览器可以选择在不:visited应用样式的情况下重新计算尺寸。自然,这比仅仅禁止某些属性需要更多的工作和更少的性能。很明显,这个决定是基于这样一个事实,即没有真正需要使用不同的字体大小、背景等来区分已访问和未访问的链接,通常,大多数开发人员会坚持只稍微修改颜色。

所以不,他们没有偏离规范,他们正在利用允许的例外。

于 2011-10-17T14:28:20.210 回答
0

根据我从规范中了解到的情况,浏览器的处理:link方式是a为了避免滥用访问状态。因此无论有没有javascript,实际应用于所有链接的样式都是:link:visited唯一的就是在访问时重载样式。

于 2011-10-17T14:07:54.317 回答