【问题标题】:How do i check if a link has been visited?如何检查链接是否已被访问?
【发布时间】:2011-10-28 04:02:55
【问题描述】:

我正在为自己编写一个用户脚本,我有一个永久链接列表,我想隐藏我已经访问过的那些。我在想我可以使用 jquery 并检查链接是否已被访问(默认颜色 = 紫色),如果是则隐藏元素。

但是...我无法弄清楚如何实际检查这一点。 .attr('style'); 只能得到我 border: none 而 .css() 无效。

如何检查链接是否被点击? 我正在使用greasemonkey在firefox 4.0.1上进行测试,但我将在chrome上使用它。

【问题讨论】:

    标签: css firefox google-chrome hyperlink userscripts


    【解决方案1】:

    颜色检查应该不再起作用了。由于此安全漏洞已修复。

    【讨论】:

    • 这是一个安全漏洞!?!即使在用户脚本中?我知道 Firefox 让某些东西通过用户脚本滑动
    • 我认为 Johni 的意思是隐私问题。 AFAIK,这没有安全问题,它只是暴露了您的个人信息。
    【解决方案2】:

    a:visited 是您要查找的选择器。这将返回文档中所有访问过的链接。

    a:visited {display: none;}
    

    【讨论】:

    • a:visited { display: none; }:link:visited { display: none; } 将隐藏它们。
    • 我将如何使用 jquery 做到这一点?抄送@feeela
    • @Josh:很好,但我注意到两个问题。 1) Firefox 似乎不允许我这样做。 2nd)我需要某种类型的规则来在访问链接而不是链接本身时隐藏块。
    • "我将如何使用 jquery 来做到这一点?"你得到 1 lulz。
    【解决方案3】:

    注入a:visited { display: none; } 规则会更容易吗?

    Greasemonkey 脚本中的类似内容:

    var head = document.getElementsByTagName('head')[0];
    
    var style = document.createElement('style');
    
    style.type = 'text/css';
    style.innerHTML = 'a:visited { display: none }';
    
    head.appendChild(style);
    

    【讨论】:

    • 哦,是的,那会容易得多。好的,那么我如何将它注入页面?我把它写进去吗?我想要div.box a.item:visited {display: none; }。我将如何用 jquery 插入它
    • 酷。我注意到两个问题。 1) Firefox 似乎不允许我这样做。 style.innerHTML = 'a { display: none }'; 有效,但 :visited 无效。 2nd)我需要隐藏块而不是链接本身。
    • 不允许你是什么意思?隐藏“块”是什么意思?链接本身之外的东西?您能否更详细地更新您的问题?
    • 我想我可能只是在单击链接时注入代码来调用函数并使用本地存储来检查是否已单击链接。我的意思是当我单击链接时,包含链接标题、描述等的 div 应该消失。但我认为我不能再这样做了。如果单击或不单击,Firefox 中的 css 颜色会给我相同的值。当我说它不允许我这样做时,我的意思是 a:visited { display:none; } 不匹配任何结果,因此不隐藏任何内容
    • 您无法测试 CSS 颜色的原因是 Firefox 主动阻止访问计算的链接样式。否则,网站可以在其页面上隐藏数百或数千个链接,测试它们的计算样式,并有效地访问您的浏览历史记录。不好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-06
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2022-08-17
    • 1970-01-01
    相关资源
    最近更新 更多