使用jQuery选择访问链接

我试图通过jQuery选择所有访问过的链接。 这是HTML

 

如果访问了question-hyperlink ,我将选择question-summary 。 有任何想法吗?

这是选择:

 $("a:visited").parent(".question-summary") 

用法示例:

 $("a:visited").parent(".question-summary").addClass("is_visited"); 

我想应该提到的是,出于安全原因,已经在浏览器中禁用了给定的方法。 由于可以通过检查访问链接来检索访问者的历史记录,因此已采取某些措施来防止这种情况发生。

资料来源: Mozilla Foundation博客。

签入Chrome和FF – 两者都不再支持$("a:visited")

我在Nevyan的Blog上找到了基于LocalStorage的解决方法:Mark使用JavaScript和localStorage访问了链接

他提出了干净的JavaScript代码来存储LocalStorage中页面用户点击的链接,并将“visit”类添加到元素的父级:

 function check_visited_links() { var visited_links = JSON.parse(localStorage.getItem('visited_links')) || []; var links = document.getElementsByTagName('a'); for (var i = 0; i < links.length; i++) { var that = links[i]; that.onclick = function() { var clicked_url = this.href; if (visited_links.indexOf(clicked_url) == -1) { visited_links.push(clicked_url); localStorage.setItem('visited_links', JSON.stringify(visited_links)); } } if (visited_links.indexOf(that.href) !== -1) { that.parentNode.className += ' visited'; } } } 

我不知道它是否比:访问过程更安全。

在这里输入代码`它不受javascript的支持,因为我也试图找到收集的方法:访问链接数据来隐藏访问的节点。

一些参考:隐私和:访问选择器 – CSS | MDN

如果你关心的只是样式,你应该能够通过CSS实现它,但通过屏幕上显示的内容应该是观察被访问的唯一方法。

我在Greasemonkey的用户脚本中这样做,让那些没有:visited样式的网站显示那些已经访问过的链接。

 // ==UserScript== // @description ADD a:visited for CSS // @include *annalscts.com* // @include *thejns.org* // @include *turkishneurosurgery.org.tr* // @include *nature.com* // @include *academic.oup.com* // @include *sagepub.com* // @grant GM_addStyle // ==/UserScript== GM_addStyle('a:visited {color:#EE5665 !important}'); 

为了将数据收集到本地我使用Greasemonkey API

 GM_setValue GM_getValue 

我刚刚在Youtube上观看API的教程,并尝试写入用户脚本

Greasemonkey API:值只是在Youtube上搜索此标题。

书面教程: http : //nulleffort.com/greasemonkey-api-values/

Greasemonkey文档: https ://wiki.greasespot.net/Greasemonkey_Manual: API

我的用户的一些部分

 //Firstly, var the ordinary variable preVisitedLinks and assigning to memory variable visitedLinks (At first the value should be undefined) var preVisitedLinks = GM_getValue("visitedLinks"); unsafeWindow.aclick = function(tlink){ window.open(tlink, '_blank', 'toolbar=yes,scrollbars=yes,resizable=yes,top=10,left=10,width=10,height=10'); // click a button added and get the link visited in my script //If the ordinary variable preVisitedLinks is undefined (First time running the script) if(preVisitedLinks.includes('undefined')){ GM_setValue('preVisitedLinks', '|' + tlink.replace('http://paper.pubmed.cn/','')); } //If the ordinary variable preVisitedLinks is not undefined, continue to add each new string collect else{ GM_setValue('preVisitedLinks', preVisitedLinks + '|' + tlink.replace('http://paper.pubmed.cn/','')); } //The ordinary variable preVisitedLinks assigning to memory variable visitedLinks value. The magic is the variable name the same. preVisitedLinks = GM_getValue("preVisitedLinks"); if(preVisitedLinks.length > 27500){ preVisitedLinks = preVisitedLinks.substr(preVisitedLinks.length - 27500); } //The memory variable visitedLinks value assigning to the ordinary variable preVisitedLinks value GM_setValue('visitedLinks',preVisitedLinks); console.info(preVisitedLinks); }; 

在某些地方,我使用字符串来检测访问过的链接代码

 if(preVisitedLinks.includes(trs[i].querySelectorAll('li')[0].querySelector('a').href.replace('http://xxx.xxxx.com/',''))){ trs[i].remove(); }