我想通过jQuery选择所有访问的链接。这里是使用jQuery选择访问的链接
<div class="question-summary">
<a class="question-hyperlink">Stuff</a>
</div>
如果question-hyperlink
已被访问的HTML,我是选择question-summary
。有任何想法吗?
我想通过jQuery选择所有访问的链接。这里是使用jQuery选择访问的链接
<div class="question-summary">
<a class="question-hyperlink">Stuff</a>
</div>
如果question-hyperlink
已被访问的HTML,我是选择question-summary
。有任何想法吗?
下面是选择:
$("a:visited").parent(".question-summary")
用例:
$("a:visited").parent(".question-summary").addClass("is_visited");
我想这应该提到的是给定的方法已经在出于安全原因,浏览器被禁用。由于可以通过检查访问的链接来检索访问者的历史记录,已采取了某些措施来防止这种情况。
经过在Chrome和FF - 两者都不支持$("a:visited")
任何更长的时间。
我发现基于解决方法上的localStorage上Nevyan's Blog: Mark visited links using JavaScript and localStorage
他提出了干净的JavaScript代码来存储页面的用户在localStorage的被点击的链接,并添加类“参观”到<a>
元素的父:
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的userscript中这样做,让那些没有: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,并尝试写入到userscript
的Greasemonkey API:值只是在Youtube上搜索这个标题。
书面指导:http://nulleffort.com/greasemonkey-api-values/
Greasemonkey的文档:https://wiki.greasespot.net/Greasemonkey_Manual:API
我userscript的某些部分
//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();
}
这种看起来像一个新的问题。此外,您将希望在此放置相关代码和文档以支持您的答案,而不是解答的链接。他们可以改变,影响你正在回答的有效性。 – rfornal 2015-02-16 16:12:08