我目前正在处理一个小Google Chrome extension to display the YouTube subscription page like it was before, on a grid。
我没有问题调整CSS看看接近前一个,但我被其他东西困住了: 我正试图找到隐藏用户已经看过的视频的方法。
在访问过的和未访问过的视频之间的CSS或HTML层次结构中似乎没有任何区别,所以我想我很难找到使用:visited
属性的方法。
但是:浏览器只允许更改:visited
属性的颜色/边框颜色/背景颜色,而jQuery无法过滤/选择:visited
属性。
有没有人知道解决这个问题的方法?
答案 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”。
您的问题的可能解决方法可能是:
答案 1 :(得分:0)
您可能无法直接选择:visited伪类,但您应该能够检查该伪类设置的属性是否存在,前提是:visit至少有一个差异。
例如说:visited伪类将背景设置为红色,你应该可以检查它是这样的
if ($(element).css('background', 'red')){
// do something
}
所以我想在你的情况下,不同的css属性可能是
display:none;
所以你应该可以检查
display:block;
或类似的东西。