无法更改visited :before伪元素的内容

8
我试图为已访问的链接添加一些效果,但是我遇到了这个问题。
这是代码:http://dabblet.com/gist/5447894 只有Opera可以成功更改:before伪元素的内容。所有其他浏览器都失败了。我有什么遗漏吗?谢谢。

1
可能是重复的问题:Firefox 4 不渲染 a:visited::before(除了颜色) - bookcasey
2个回答

16

已允许(即未被忽略)的已访问链接CSS属性包括colorbackground-colorborder-*-coloroutline-colorcolumn-rule-color(在某些情况下还有更多)。

这是为了防止历史记录窃取攻击。有关详细信息,请参见此文章

因此,您可以在:visited链接上设置伪类:before,但它将被忽略,并且看起来好像链接没有被访问过。这不是错误,而是一种特性;)


1
这意味着Opera缺乏安全性! - Usman Arshad

3
为了保护用户的隐私,现代浏览器对于样式化:visited链接的可能性非常有限 - 这样你就无法通过检查javascript计算样式来检测用户之前访问过哪些站点。可以用于样式化:visited链接的属性包括:colorbackground-colorborder-color(及其子属性)、outline-color以及填充和描边属性的颜色部分。即使如此,您也无法通过javascript获取已访问链接的计算样式值。您可以在这里了解更多信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接