Riconoscere link già clickati e non renderli più clickabili

Discussione in 'Javascript' iniziata da icex, 11 Ottobre 2012.

Tag (etichette):
  1. icex

    icex Nuovo Utente

    Registrato:
    14 Agosto 2012
    Messaggi:
    29
    Mi Piace Ricevuti:
    0
    Punteggio:
    0
    Salve ragazzi. Questa discussione proviene dalla sezione HTML/CSS e mi è stato detto che devo postare qui perchè è materia di js.

    Il mio problema è semplice (nell'esposizione però, altrimenti non starei qui a chiedervi una mano :) ): vorrei che l'utente Tizio, una volta che clicca su un link della pagina X venga reinidrizzato ad una pagina Y. Dopo averla visionata dovrà ritornare alla pagina X in cui, però, questa volta, il link prima utilizzato da Tizio non potrà essere più clickabile da Tizio, ma dovrà essere disponibile ad un utente Caio (sempre che lui non l'abbia clickato in precedenza :) ). Spero di aver fatto cogliere il senso di quello che vorrei dire in questo groviglio di parole :)

    In ogni caso, io non voglio metterci un semplice # nel href ma voglio che non venga proprio più riconosciuto come link. Per spiegarmi meglio posto lo stesso esempio della discussione-madre:

    Codice:
    <a href="#">Questo è un testo che mi viene ancora riconosciuto come link </a>
    
    ....voglio che diventi ad esempio.....
    
    <label> Questo è un testo che non mi viene più riconosciuto come link </label>
    
    Premetto (anzi postmetto :) ) che non sono esperto in js... so soltanto qualche nozioncina utile per mettere su qualche funzioncina carina ^^ Nulla vieta che se mi insegnate la procedura, un metodo che possa far quanto vi ho spiegato, sarò disposto ad imparare e ovviamente vi ringrazierò tanto ^^
     
    Ultima modifica: 11 Ottobre 2012
  2. icex

    icex Nuovo Utente

    Registrato:
    14 Agosto 2012
    Messaggi:
    29
    Mi Piace Ricevuti:
    0
    Punteggio:
    0
    Nessuno? :(
     
  3. borgo italia

    borgo italia Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    4 Febbraio 2008
    Messaggi:
    15.412
    Mi Piace Ricevuti:
    105
    Punteggio:
    63
    Sesso:
    Maschio
    Località:
    PR
    Home Page:
    ciao
    visto che gli esperti di js si stanno facendo desiderare, penso che intanto ti convenga leggere quest'articolo che ho trovato
    http://www.mrwebmaster.it/javascript/articoli/creare-leggere-cancellare-cookie-javascript_1032.html
    penso che possa essere un primo passo per vedere come si usano i cookie con js.
    poi il passaggio
    creare cookie se cliccato sul link
    verificare se cookie esiste e se si trasformare il link il lista non so cosa dirti.
    spero che qualcuno ti risponda, ma vedrai che qualcuno arriva
     
  4. icex

    icex Nuovo Utente

    Registrato:
    14 Agosto 2012
    Messaggi:
    29
    Mi Piace Ricevuti:
    0
    Punteggio:
    0
    Grazie 1000 borgoitalia :) davvero gentilissimo :) sei venuto a trovarmi anche qua :D comunque per quanto concerne il passaggio dei cookie qualcosina in PHP la so già fare... a me serve o trasformare i tag oppure eliminare proprio href (il ché sarebbe la miglior soluzione possibile ;) ) Quindi non mi rimane altro che attendere pazientemente. E nel farlo ti ringrazio nuovamente per l'interesse ;)
     
  5. icex

    icex Nuovo Utente

    Registrato:
    14 Agosto 2012
    Messaggi:
    29
    Mi Piace Ricevuti:
    0
    Punteggio:
    0
    Risolto :D Sometimes (but i think the most of the time) English uncloses itself to be very very useful!
    Questo per omaggiare il grande aiuto che mi arriva da molti siti stranieri :)
    Per chi fosse interessato, basta mettere questo codicino nello script:

    Codice:
    function togliHref(){
    document.anchors["link"].removeAttribute("href");}
    
    e nell'html ci dev'essere questo:
    HTML:
    <a name="link" href="MiaPagina.html" onclick="togliHref">Clickami per non farmi essere più clickabile</a> <!-- ATTENZIONE ALL'ATTRIBUTO NAME!! Deve avere lo stesso contenuto dell'oggetto ANCHORS del js! -->
    
    Semplice semplice ed efficace :) inoltre, come si può notare, è una funzione molto versatile che ci permettere di gestire i link a nostro piacimento!
    In ogni caso.. grazie della disponibilità BorgoItalia!... alla prossima ;)
     
    Ultima modifica: 13 Ottobre 2012
  6. borgo italia

    borgo italia Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    4 Febbraio 2008
    Messaggi:
    15.412
    Mi Piace Ricevuti:
    105
    Punteggio:
    63
    Sesso:
    Maschio
    Località:
    PR
    Home Page:
    ciao
    l'hai provato, non mi sembra che funzi
     
  7. icex

    icex Nuovo Utente

    Registrato:
    14 Agosto 2012
    Messaggi:
    29
    Mi Piace Ricevuti:
    0
    Punteggio:
    0
    Sì sì.. Con Mozilla & Company sì.. Con IE9, ovviamente, no -.- Tra le tante cose, non digerisce gli oggetti anchor. Comunque ho risolto in questo modo:

    Codice:
    function togliHref(){
    document.getElementById('link').removeAttribute("href");}
    
    e nell'HTML:

    HTML:
    <a id="link" href="MiaPagina.html" onclick="togliHref">Clickami per non farmi essere più un link</a> <!-- QUESTA VOLTA ATTENZIONE ALL'ATTRIBUTO ID!! Deve avere lo stesso contenuto del getElementById! -->
    
    Questo è quanto :) Spero vi sia utile :) Alla prossima! ;)
     
  8. borgo italia

    borgo italia Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    4 Febbraio 2008
    Messaggi:
    15.412
    Mi Piace Ricevuti:
    105
    Punteggio:
    63
    Sesso:
    Maschio
    Località:
    PR
    Home Page:
    ciao
    l'ho provato con firefox.
    se dalla pag col js clicchi sul link e vai alla pagina MiaPagina.html e poi torni indietro il link è di nuovo attivo, del resto è logico perchè tornando indietro refresci la pag e quindi come se tu non avessi cliccato.
    come fa a ricordarsi che hai fatto il click?
    se metti
    HTML:
    <a id="link" href="#" onclick="togliHref">Clickami per non farmi essere più un link</a>
    il link rimane attivo ad ogni click
    prova
     
  9. icex

    icex Nuovo Utente

    Registrato:
    14 Agosto 2012
    Messaggi:
    29
    Mi Piace Ricevuti:
    0
    Punteggio:
    0
    Ah già :) Pensavo che il titolo della discussione fosse soltanto "Rendere link non più cliccabili". Per questo mi sono mantenuto solo su quelle istruzioni.

    Comunque il discorso è semplice anche per far "ricordare" i link clickati. Basta usare i cookie di cui tu stesso mi hai suggerito l'utilizzo ;)

    Utilizzando delle funzioni come quelle indicate nella pagina che mi hai suggerito (ma ce ne sono altre in giro.. anche se ritengo che con il PHP la gestione dei cookies sia moooooolto più semplice!) creiamo un cookie per esempio sul link della pagina-target del link che mi permette di ritornare alla pagina mittente:
    HTML:
    <a href="javascript:history.go(-1)" onclick="creaCookie('nomeCookie', 'valoreCookie', 'tempoScadenza')">Vai alla pagina mittente</a> //Ovviamente ci dev'essere la funzione madre tra gli <script> come ho detto prima
    
    Poi all'atto del caricamento della pagina mittente (e quindi con un evento onload ) ci metto la funzione che verifica se il mio cookie esiste e quindi rende non clickabile il link (mediante l'ambaradam che abbiamo visto sopra). Del tipo:

    Codice:
    <script type="text/javascript">
    function verificaLink() {
    var valore= letturaCookie('nomeCookie');
    if (valore = 'valorePredefinito'){
    document.getElementById('link').removeAttribute("href");
    }
    </script>
    
    HTML:
    <body onload="verificaLink()">
    //Istruzioni varie
    </body>
    
    Spero che con questo sia più chiaro adesso :)
     
  10. Vale2

    Vale2 Utente Attivo

    Registrato:
    28 Maggio 2006
    Messaggi:
    446
    Mi Piace Ricevuti:
    0
    Punteggio:
    0
    Occupazione:
    Ex Studente - Cerca collaborazione per Asp e Asp.N
    Località:
    Livorno

    Ciao,

    dovresti rivedere quello che hai scritto e gli errori riguardo agli esempi postati.

    setAttribute() ti permette di impostare un evento su un tag o altri elementi html

    removeAttribute() fa il contrario

    Sono tutti e due elementi statici, se: come hai scritto imposti un removeAttribute() su un tag href è impossibile che ti esegua l'href (andare al link inserito nel tag <a href="pippo.html"), visto che è stato chiesto di rimuoverlo.

    Codice:
    function togliHref(){
    document.getElementById('link').removeAttribute("href");}
    
    link per richiamare la funzione
    
    <a id="link" href="MiaPagina.html" onclick="togliHref">Clickami per non farmi essere più un link</a>
    Funziona perché è sbagliato il gestore di eventi onclick

    No onclick="togliHref"

    Ma

    onclick="togliHref()"

    Bene non usare parole chiave come link in javascript.

    Codice:
    <script type="text/javascript">
    function verificaLink() {
    var valore= letturaCookie('nomeCookie');
    if (valore = 'valorePredefinito'){
    document.getElementById('link').removeAttribute("href");
    }
    </script>
    Errori:

    manca una graffa } di chiusura

    impostato un'operatore di assegnazione = invece che uno di controllo nella if ==

    Posto due esempi con set e remove

    Codice:
    <script type="text/javascript">
    function impostaHref(){
    document.getElementById('linke').setAttribute('href', 'pippo.html');
    }
    </script>
    Codice:
    <a id="linke" href="" target="_blank" onclick="impostaHref()">Clickami sono un link</a>

    Codice:
    <script type="text/javascript">
    function togliHref(){
    document.getElementById('linke1').removeAttribute('href', 'pippo.html');
    }
    </script>

    Codice:
    <a id="linke1" href="pippo.html" target="_blank" onclick="togliHref()">Clickami per non farmi essere più un link</a>
    Un esempio per il cookie

    Codice:
    <style type="text/css">
    #mio_div{
    display:none;
    }
    </style>
    
    <script type="text/javascript">
    window.onload=function(){
    if (document.cookie.indexOf("valeria=true") === -1) {
        document.getElementById("mio_div").style.display = "block";
        document.cookie = "valeria=true; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/";
       }
    }
    </script>
    
    <div align="center" id='mio_div'>‹(•¿•)›-- VALE DUE VALE2 VALE --‹(•¿•)›</div>
    La scritta nel div si vedrà solo la prima volta che si accede alla pagina.

    Valeria.
     
  11. icex

    icex Nuovo Utente

    Registrato:
    14 Agosto 2012
    Messaggi:
    29
    Mi Piace Ricevuti:
    0
    Punteggio:
    0
    Ciao Valeria. Innanzitutto ti ringrazio per le segnalazioni. Voglio precisare che il codice l'ho scritto molto velocemente.. Quindi penso fosse deducibile che errori come quello delle parentesi nel gestore degli eventi onclick oppure l'aver saltato una parentesi graffa fossero solo errori di distrazione o comunque di battitura.
    Poi non a caso l'esempio che ho postato:
    Codice:
     <a id="link" href="MiaPagina.html" onclick="togliHref">Clickami per non farmi essere più un link</a>
    aveva semplicemente lo scopo di mostrare come funzionasse la funzione (infatti guarda la scritta con cui si presenta il link ;) ). In effetti però, adesso che la guardo, mi rendo conto che, per lo scopo per cui l'ho postato, nell' href al posto di MiaPagina.html dovevo metterci un semplice #. 0:) Vabbè... scuse ufficiali N°1. :)

    E comunque per quanto riguarda il removeAttribute, so che rimuove l'href e non a caso l'ho fatto dopo che il link fosse utilizzato.

    Cioè ricapitolando in steps tutto quanto:
    1) C'è un link con id='link' (e su questo è vero... in effetti è meglio non chiamarlo con "link" ma sinceramente, mancando di fantasia, è stato il primo nome che mi è venuto in mente.. e comunque il suo scopo era semplicemente di evidenziare la relazione tra il valore di id nel tag <a> e quello del getElementById nella funzione js);
    2) Ci clicco sopra e vengo reindirizzato alla pagina-target;
    3) La pagina-target, tra le altre cose, ha un link che mi reindirizza alla pagina mittente (per capirci, quella con il link con id='link' :) )
    4) Una volta che ci clicco sopra scrivo il cookie con i suoi vari connotati servendomi di una funzione js e vengo reindirizzato alla pagina mittente;
    5) A questo punto il link che ho utilizzato all'inizio non mi serve più ed il mio scopo è oscurarlo: pertanto metto un evento onload nel body ed in esso una funzione che mi legge il cookie creato in precedenza. Se il suo valore è uguale ad uno prefissato (o semplicemente si può mettere nell'if la condizione di esistenza del cookie), allora in tal caso procedo con la funzione eliminando l'href del link con id='link' (il quale, mi ripeto, che non mi serve più).

    Penso che il ragionamento quadri.. e malgrado gli errori di sopra (per cui ci tengo nuovamente a scusarmi, ma ribadisco che sono stati dovuti dalla fretta di scrivere) il fatterello funziona perchè l'ho provato. E' chiaro che non mettevo il mio codice in specifico ma ho cercato di sviluppare uno schema su cui chiunque può adattarsi se si trovasse nel mio stesso problema.

    Questo è quanto. Buona serata.
     
  12. Vale2

    Vale2 Utente Attivo

    Registrato:
    28 Maggio 2006
    Messaggi:
    446
    Mi Piace Ricevuti:
    0
    Punteggio:
    0
    Occupazione:
    Ex Studente - Cerca collaborazione per Asp e Asp.N
    Località:
    Livorno
    Ciao,

    posti esempi con errori, non provi quello che scrivi, si è probabile, per me no problem,

    ti ho dato la soluzione in tre righe di codice per il link e i cookie.

    Poi il lavoro è tuo e fai come vuoi o per te risulta la soluzione migliore.

    Buon lavoro

    Valeria.
     
Sto caricando...

Condividi questa Pagina