6

我正在使用 Chrome 和 Firefox 的用户脚本,并且正在检查用户访问过的链接。我有

a{
   color: blue;
}

a:visited{
   color: red !important;
}

在页面加载后立即导入的我的css中。我访问过的页面上的链接是红色的,而不是默认的蓝色。然后我使用:

alert(window.getComputedStyle(document.getElementById("myLink"), null).getPropertyValue("color"))

在每个链接上,它们都为 Firefox 中访问的链接返回红色,但在 Chrome 中它们都返回蓝色。

我想知道如何使用 javascript 和 Chrome 来实现查找访问的链接。Jquery 代码或普通的 javascript 代码都可以。提前致谢。

4

1 回答 1

9

A_horse_with_no_name 是对的。:visited浏览器供应商在 2010 年修复了这个安全问题,在一个漂亮的演示( Spyjax;不再运行)证明任何网页都可以发现您是否访问过任何给定的 URL 之后。您可以验证getComputedStyle在链接上不再返回:visited颜色 - 即使在同一个域中:

// Test I used within the JS console.
// :visited is no longer detectable by getComputedStyle.
function getLinkColor(url) {
  var a = document.createElement('a');
  a.href = a.textContent = url;
  document.body.appendChild(a);
  return document.defaultView.getComputedStyle(a, null).color;
}
getLinkColor('http://stackoverflow.com/questions/5394099/detect-visited-link-in-chrome');
getLinkColor('http://stackoverflow.com/some-fake-path');

对于 Chrome 扩展程序,如果您想检测用户是否访问过某个 URL,我认为您必须请求"history"权限并调用chrome.history.getVisits.

于 2011-03-22T18:59:41.207 回答