2009-07-31 11 views
8

Sto provando a selezionare tutti i collegamenti visitati tramite jQuery. Ecco il codice HTMLUsa jQuery per selezionare i collegamenti visitati

<div class="question-summary"> 
    <a class="question-hyperlink">Stuff</a> 
</div> 

Se question-hyperlink è stato visitato, ero per selezionare question-summary. Qualche idea?

risposta

8

Qui è la selezione: esempio

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

Usage:

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

Credo va detto che l'approccio dato è stato disattivato nel browser per motivi di sicurezza. Poiché è possibile recuperare la cronologia di un visitatore controllando i collegamenti visitati, alcune misure sono state prese per impedirlo.

Fonte

: Mozilla Foundation Blog.

Controllato in Chrome e FF - entrambi non supportano $("a:visited") più.

2

ho trovato soluzione basa sulla LocalStorage su Nevyan's Blog: Mark visited links using JavaScript and localStorage

Ha proposto codice JavaScript pulito per memorizzare link cliccati dall'utente pagina in LocalStorage e aggiungere classe "visitato" per genitore di un <a> elemento:

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'; 
     } 
    } 
} 

Non so se sia più sicuro di: approccio visitato però.

+0

Questo tipo di assomiglia ad una nuova domanda. Inoltre, vorrai inserire codice e documentazione rilevanti qui per supportare la tua risposta, non un link alla risposta. Possono cambiare, influenzando la validità di ciò a cui stai rispondendo. – rfornal

+1

Grazie per averlo indicato :) Ho corretto la mia risposta. – Maciej

0

inserire il codice qui. Non è supportato da javascript in quanto anch'io cerco di trovare metodi per raccogliere un: dati dei collegamenti visitati per nascondere il nodo visitato.

qualche riferimento: Privacy e: selettore visitato: CSS | MDN

Se tutto quello che ti interessa è lo styling, dovresti essere in grado di ottenerlo tramite CSS, ma attraverso ciò che viene visualizzato sullo schermo dovrebbe essere l'unico modo per osservarlo.

Faccio questo modo in un userscript per Greasemonkey per consentire a quei siti senza uno: stile visitato visualizzare quei collegamenti già visitati.

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

Per raccogliere i dati in locale che uso l'API Greasemonkey

GM_setValue 
GM_getValue 

ho appena tutorial guardato su YouTube per l'API e cercare di scrivere nella userscript

Greasemonkey API: Valori solo cerca questo titolo su Youtube.

Tutorial scritto: http://nulleffort.com/greasemonkey-api-values/

Greasemonkey Documenti: https://wiki.greasespot.net/Greasemonkey_Manual:API

alcune parti del mio 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); 
}; 

E in qualche luogo io uso la stringa per rilevare il codice di link visitati

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