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

Posted

技术标签:

【中文标题】无法更改访问的内容:before 伪元素【英文标题】:Cannot change the content of visited :before pseudo-elements 【发布时间】:2013-04-17 07:42:40 【问题描述】:

我试图为访问的链接添加一些效果,然后我遇到了这个问题。

这里是代码:http://dabblet.com/gist/5447894

只有 Opera 可以成功改变:before 伪元素的内容。所有其他浏览器都失败。我错过了什么吗?谢谢

【问题讨论】:

Firefox 4 not rendering a:visited::before (except color)的可能重复 【参考方案1】:

已访问链接的允许(= 不忽略)CSS 属性为 colorbackground-colorborder-*-coloroutline-colorcolumn-rule-color(在某些情况下更多)。

这是为了防止历史窃取攻击。详情请见this article。

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

【讨论】:

表示opera缺乏安全性!【参考方案2】:

出于隐私原因,在现代浏览器中对:visited 链接进行样式设置的可能性范围非常有限,因此您无法通过使用 javascript 检查计算的样式来检测用户之前访问过哪些网站。

:visited 链接的样式允许的属性是

color background-color border-color(及其子属性) outline-color 填充和描边属性的颜色部分

即便如此,您也无法通过 javascript 获取已访问链接的计算样式值。

您可以阅读更多关于它的信息here。

【讨论】:

谢谢你的解释:)

以上是关于无法更改访问的内容:before 伪元素的主要内容,如果未能解决你的问题,请参考以下文章

在 ::after 或 ::before 伪元素内容中添加换行符

伪元素::before和::after的详细介绍

如何在 :before 元素的伪元素上添加 svg 作为内容? [复制]

说说伪类与伪元素的不同

javascript:获取伪元素的高度:before元素

更改 :before 和 :after 伪元素的样式? [复制]