Определить посещенную ссылку в 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
,