Определить посещенную ссылку в Chrome

Я использую usercript для Chrome и Firefox и проверяю ссылки, которые посетил пользователь. я имею

a{
   color: blue;
}

a:visited{
   color: red !important;
}

в моем css импортируется, как только страница загружается. A-ссылки на странице, которую я посетил, окрашены в красный цвет, а не по умолчанию в синий. Я тогда использую:

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

на каждой ссылке, и они все возвращают красный для посещенных ссылок в Firefox, но в Chrome они все возвращают синий

Мне было интересно, как реализовать поиск посещенных ссылок, используя JavaScript с Chrome. Код Jquery или нормальный код JavaScript в порядке. Заранее спасибо.

1 ответ

Решение

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://stackru.com/questions/5394099/detect-visited-link-in-chrome');
getLinkColor('http://stackru.com/some-fake-path');

Для расширений Chrome, если вы хотите определить, посетил ли пользователь URL, я думаю, вам придется запросить "history" разрешение и звонок chrome.history.getVisits,

Другие вопросы по тегам