如果:访问链接,隐藏父母的方式

时间:2013-08-16 14:25:14

标签: jquery css google-chrome-extension content-script visited

我目前正在处理一个小Google Chrome extension to display the YouTube subscription page like it was before, on a grid

我没有问题调整CSS看看接近前一个,但我被其他东西困住了: 我正试图找到隐藏用户已经看过的视频的方法。

在访问过的和未访问过的视频之间的CSS或HTML层次结构中似乎没有任何区别,所以我想我很难找到使用:visited属性的方法。

但是:浏览器只允许更改:visited属性的颜色/边框颜色/背景颜色,而jQuery无法过滤/选择:visited属性。

有没有人知道解决这个问题的方法?

2 个答案:

答案 0 :(得分:2)

修改

当我读到第一段时,问题实际上是关于Google Chrome Extension并且没有为此标记,我回答了它使用jQuery的请求。以下是有关如何使用chrome.history API访问Google Chrome扩展程序中访问过的网页的更多信息。

Google chrome.history API

在Google Chrome扩展程序中,如果用户授予权限,您可以访问所有访问过的链接。您必须在Extension manifest

中加入此代码
"permissions": [
    "history"
],

这将在安装过程中产生Permission warning,告知用户您的扩展程序可能要访问哪些信息。

最后,您现在可以使用search-method来请求访问过的网页。如果text对象的query属性为空,您甚至可以请求所有页面:

chrome.history.search(object query, function callback)

这将产生一个historyItems数组,其中包含一堆数据  每个页面的信息,如URL,页面标题,最后一次访问...

<强>的JavaScript

不幸的是,无法使用CSS和JavaScript的组合选择用户访问过的链接。这是由于隐私设置。它甚至写在CSS2 specification "5.11.2 The link pseudo-classes: :link and :visited"

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

您可以在此处详细了解:“Plugging the CSS History Leak”。

您的问题的可能解决方法可能是:

  • 存储用户在Local Storage
  • 中点击的链接
  • 通过在用户会话中存储链接的脚本或
  • 重定向每个链接
  • 使用AJAX subit新点击的链接,并将值存储在会话中

答案 1 :(得分:0)

您可能无法直接选择:visited伪类,但您应该能够检查该伪类设置的属性是否存在,前提是:visit至少有一个差异。

例如说:visited伪类将背景设置为红色,你应该可以检查它是这样的

if ($(element).css('background', 'red')){
    // do something
}

所以我想在你的情况下,不同的css属性可能是

display:none;

所以你应该可以检查

display:block;

或类似的东西。