浏览器不尊重a:visited {text-decoration:none; }

时间:2015-07-02 20:59:55

标签: css css-selectors

我无法从访问过的链接中删除下划线。在我的计算机中,下面的小提琴在任何浏览器(当前版本的Chrome,Firefox和IE)中显示访问链接的黑色,带下划线文本。



a:link       { color: red;   text-decoration: underline; }
a:visited    { color: black; text-decoration: none;      }

<p><a href="http://www.nevervisited.com">This link is not visited.</a></p>
<p><a href="http://www.google.com">This is link is visited.</a></p>
&#13;
&#13;
&#13;

这是Chrome访问链接的检查员。

我怀疑a:visited灰显了与此有关,但this question关于灰色样式并没有为我做任何事情,尽管它帮助了许多其他人。

这些答案(thisthis)表明该规范并不关心子元素&#39; text-decoration当他们的祖先定义了它时,但我不认为这是这种情况。我的<a>没有强调父母,我也没有使用伪元素,而是伪

此外,如果W3C说明

,Chrome为什么会将a:link应用于访问过的链接?
  

两个州[a:linka:visited]是互斥的。

也许这与隐藏网站私人信息的用户代理有关,比如W3C在之前的报价之后建议?这样:

  

注意。样式表作者可能会滥用:link:visited伪类来确定用户在没有用户访问的情况下访问了哪些网站。同意。

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

1 个答案:

答案 0 :(得分:8)

您可以在大多数基于Webkit的浏览器(如Safari)或基于Blink(Chrome和Opera)的a:visited链接上应用的唯一CSS属性为color。其他任何东西都行不通。它与浏览器历史窃取有关。您可以从这里了解更多信息:

http://seclists.org/fulldisclosure/2013/May/13

但是,您可以使用a {text-decoration: none;}更改所有链接的样式。

选择器本身并不危险,但是如果你将它与J​​avascript的功能结合起来就像getComputedStyle()一样,事情可能变得非常丑陋和丑陋我的意思是其他用户可以查看和阅读你的个人浏览器历史记录。

Mozilla(Gecko引擎)limited the selector propertiescolorbackground-colorborder-*-color