Detect Visited Link In Chrome

浪子不回头ぞ 提交于 2019-11-30 05:23:15

问题


I am using a userscript for Chrome and Firefox and I am checking for links that have been visited by the user. I have

a{
   color: blue;
}

a:visited{
   color: red !important;
}

in my css imported as soon as the page loads. The a-links on the page that I have visited are colored red instead of default of blue. I then use:

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

on each link and they all return red for the visited links in Firefox but in Chrome they all return blue.

I was wondering how to implement finding visited links using javascript with Chrome. Jquery code or normal javascript code is fine. Thanks in advance.


回答1:


A_horse_with_no_name is right. The :visited security issue was fixed in 2010 by the browser vendors, after a nifty demo (Spyjax; no longer up) demonstrated that any webpage could discover whether you've visited any given URL. You can verify that getComputedStyle on a link no longer returns the :visited color--even within the same domain:

// 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');

For Chrome extensions, if you want to detect whether a user has visited a URL, I think you'll have to request the "history" permission and call chrome.history.getVisits.



来源:https://stackoverflow.com/questions/5394099/detect-visited-link-in-chrome

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!