首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Privacy and the :visited selector

从历史上看,CSS :visited选择器已经成为网站查询用户历史的一种方式,通过使用getComputedStyle()或其他技术来浏览用户的历史记录,找出用户访问的网站。这可以快速完成,不仅可以确定用户在网上的位置,还可以用来猜测关于用户身份的大量信息。

为了缓解这个问题,Gecko 2已经做了一些修改,以限制访问链接可以获得的信息量。

善意的小谎言

第一个变化就是在某些情况下,Gecko会欺骗网络应用程序。特别是,getComputedStyle()类似的功能,例如element.querySelector()总是返回值,表示用户从未访问过任何页面上的链接。

另外,如果你使用一个同级连接器,例如:visited + span,在<span>将作为如果该链接是未访问过的风格。

而且,在极少数情况下,如果使用嵌套的链接元素,并且正在匹配的元素与正在测试历史记录中的链接不同,则该元素被绘制为就像该链接未被访问一样。

访问链接样式的限制

您仍然可以在视觉上对访问过的链接进行样式设置,但现在对可以使用的样式有限制。只有以下属性可以应用于访问过的链接:

  • color
  • background-color
  • border-color (及其子属性)
  • outline-color
  • fillstroke属性的颜色部分

此外,即使您可以为访问链接设置的属性,您也无法更改未访问链接和已访问链接之间的透明度,否则您将无法使用rgba()或使用hsla()颜色值或transparent关键字。

下面是一个使用带有讨论限制的样式的示例:

代码语言:javascript
复制
:link {
  outline: 1px dotted blue;
  background-color: white;
  /* The default value of background-color is 'transparent'.
     You need to specify a different value, otherwise changes on :visited don't apply */
}

:visited {
  outline-color: orange;    /* Visited links have an orange outline */
  color: yellow;            /* Visited links have yellow colored text */
  background-color: green;  /* Visited links have a green background */
}

对web开发人员的影响

总的来说,这应该会对web开发人员产生太大的影响。然而,这可能需要对网站进行以下修改:

  • 使用背景图像对链接进行样式设置,并指出它们是否已被访问将不再有效,因为只有颜色可用于对访问的链接进行样式设置。

扫码关注腾讯云开发者

领取腾讯云代金券