无法更改访问的内容: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 属性为 color
、background-color
、border-*-color
、outline-color
和 column-rule-color
(在某些情况下更多)。
这是为了防止历史窃取攻击。详情请见this article。
因此,从技术上讲,您可以为:visited
链接设置一个:before
伪类,但它会被忽略并看起来好像链接没有被访问过。这不是一个错误,而是一个特性;)
【讨论】:
表示opera缺乏安全性!【参考方案2】:出于隐私原因,在现代浏览器中对:visited
链接进行样式设置的可能性范围非常有限,因此您无法通过使用 javascript 检查计算的样式来检测用户之前访问过哪些网站。
:visited
链接的样式允许的属性是
color
background-color
border-color
(及其子属性)
outline-color
填充和描边属性的颜色部分
即便如此,您也无法通过 javascript 获取已访问链接的计算样式值。
您可以阅读更多关于它的信息here。
【讨论】:
谢谢你的解释:)以上是关于无法更改访问的内容:before 伪元素的主要内容,如果未能解决你的问题,请参考以下文章
在 ::after 或 ::before 伪元素内容中添加换行符