21

是否有任何原因无法在 Internet Explorer 或 Chrome 上运行:

<html>
    <head>
        <style>
            A {font-weight: bold; color:black;}
            A:visited {font-weight: normal; color: black; }
            .Empty {font-weight: bold; color: black; }
        </style>
    </head>

    <body>
        <a href="http://mysite">click me</a>
    </body>
</html>

我点击的链接永远不会正常,只是保持粗体。在其他一些浏览器上它可以工作。

改变大小写并没有影响它。更改aa:link不影响它。改变颜色有效,只是字体粗细无效。

一种解决方法是更改​​可访问性以忽略 Web 颜色。我无权访问源代码,所以我不得不这样做。

4

6 回答 6

37

实际上,这与区分大小写无关。这是一项安全功能。伪类的功能:visited在许多现代浏览器(Fx4、IE9、Chrome)中受到限制,以防止 CSS 漏洞:请在此处阅读。

如今,getComputedStyle()在这些浏览器中,通常会返回访问过的链接的值,就好像它们没有被访问过一样。但是,我可以简单地想象规避这一点:使用访问链接时,元素的宽度会发生变化,font-weight因此允许更改链接的浏览器实际上不会修复安全漏洞。font-weight:visited

您可以看到浏览器会采取一些特定措施来防止这种情况发生:

  • window.getComputedStyle方法和类似的函数(例如element.querySelector)将始终返回指示用户从未访问过页面上的任何链接的值。
  • 如果您使用同级选择器,例如:visited + span,则相邻元素(在此示例中为 span)将被设置为好像链接未被访问一样。
  • 在极少数情况下,如果您使用嵌套的链接元素并且匹配的元素与正在测试历史中存在的链接不同,则该元素也将呈现为好像该链接未被访问一样。

因此,没有解决此问题的方法。

于 2011-11-30T19:44:35.540 回答
2

一个有用的属性:visitedbackground-color. 所以试试:

:visited {background-color:red;}

:visited也适用于非a元素。

于 2020-06-23T09:31:04.660 回答
1

该问题与历史嗅探有关,由于隐私问题,已访问链接禁用更改 css 属性。

我想出了以下解决方法来达到预期的效果。可以更改访问链接的背景颜色。

解决方案非常简单:

  1. 在链接上设置背景图像,其高度与链接相同,宽度为 1px,并水平重复图像
  2. 图片与链接的背景颜色相同
  3. 使该图像的一个像素透明,在垂直中间
  4. on :visited state 只需将该链接的背景颜色更改为链接的文本颜色
  5. 只有一行背景颜色可见,因为背景图像掩盖了它

这是一个例子:

a:link {
    color:#000;
    background:#FFF url('../img/linethrough.png') repeat-x top left;
}

a:visited {
    background-color:#000;
    color:#000;
}
于 2013-03-09T15:09:25.450 回答
0

CSS 本身不区分大小写,但如果使用此样式的 HTML 文件具有 XML 声明和 XHTML doctype,则该 CSS 将不起作用,因为标签区分大小写。您必须将“a”标签设置为小写。

在这里解释: http ://reference.sitepoint.com/css/casesensitive

于 2011-11-30T19:29:21.757 回答
-1

也许尝试更改颜色属性,看看是否有效果。

要进行故障排除,您可能需要尝试使用 chrome 中的开发人员工具来查看应用了哪种样式。

于 2011-11-30T19:28:12.757 回答
-2

您需要为 a:link、a:visited、a:active 等单独声明。

删除不包含冒号的第一个样式。它是压倒一切的。替换为:链接。

于 2011-11-30T19:31:27.157 回答