• User Attivo

    JQuery modal e Cookies per far visualizzare 1 sola volta in 1 anno un div

    Ciao a tutti ...
    Sto impazzendo perchè non riesco a trovare un codice JQuery che mi permetta di far visualizzare SOLO la prima volta un div in sovra-impressione (con JQuery modal).

    Ovviamente sto provando ad usare i Cookies ma lo script che sto usando funziona solo fin quando non chiudo il browser. Infatti se non chiudo il browser il div non viene più mostrato (se provo a fare i refresh della pagina), mentre se chiudo e riapro il browser il div viene mostrato nuovamente (anche se sempre e solo la prima volta).

    Non riesco a trovare un esempio che funzioni bene ... trovo solo esempio che funzionano "non perfettamente" come il mio ... vorrei che i cookies facciano in modo che per esempio quel div non sia mostrato, magari, fino ad una certa data (magari anche 1 anno).

    Qualcuno mi può aiutare, per favore ?


  • User Attivo

    Qual è l'impostazione del suo browser riguardo i cookies quando viene chiuso?


  • User Attivo

    @MenteLibera said:

    Qual è l'impostazione del suo browser riguardo i cookies quando viene chiuso?

    ho controllato l'impostazione del browser e non vengono cancellati (i cookies) alla chiusura del browser (rimangono) ... lo script che uso probabilmente non usa una data di scadenza del cookies e quindi si resetta ad ogni chiusura del browser (anche se il cookies controllando rimane salvato nel browser)...

    Non so ...


  • User Attivo

    Mi pare strano questo caso confrontando i sintomi indicati nel post #1 perché sembrava che i cookies venissero cancellati con la chiusura del browser e quindi la volta successiva non trovandolo ripresenti quel div in sovra-impressione.

    Dalla lettura del post #3 ho l'impressione che da qualche parte ci sia una chiamata che resetti quel cookie, ed in base alle specifiche esso rimane in vita nel browser almeno finché non viene chiuso.


  • User Attivo

    eh infatti, hai ragione ... è lo stesso ragionamento che ho fatto io e invece no ...
    Questo è lo script che uso, che poi è quello che trovi ovunque sul web:

    if (!readCookie('hasLaunch')) {
    launchWindow('#dialog2');
    createCookie('hasLaunch', 1, 365);
    }

    function createCookie(name,value,days) {
    if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days2460601000));
    var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
    }

    function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
    var c = ca*;
    while (c.charAt(0)==' ') c = c.substring(1,c.length);
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
    }


  • User Attivo

    mi devi perdonare, ho sbagliato alla grande ...
    Ho controllato ancora per scupolo e in effetti hai ragione tu (non so perchè ero convinto del contrario) ...

    In effetti il cookie si cancella con la chiusura del browser ed è per questo (come giustamente pensavi tu) che riaprendo il browser il div ricompare!
    Mannaggia ...

    Ok trovato l'inghippo allora come posso modificare questo script per non farlo cancellare ad ogni chiusura del browser e dargli magari una data di scadenza ?


  • User Attivo

    @studio1977 said:

    Ok trovato l'inghippo allora come posso modificare questo script per non farlo cancellare ad ogni chiusura del browser e dargli magari una data di scadenza ?

    A questo problema non penso che ci sia soluzione per quanto emerso precedentemente.


  • User Attivo

    @MenteLibera said:

    A questo problema non penso che ci sia soluzione per quanto emerso precedentemente.

    cioè non c'è uno script che crei un cookie che non faccia vedere quel div fino ad una certa data ?


  • User Attivo

    I cookies una volta cancellati con la chiusura del browser (o manualmente dall'utente) non resuscitano.


  • User Attivo

    @MenteLibera said:

    I cookies una volta cancellati con la chiusura del browser (o manualmente dall'utente) non resuscitano.

    ah ok in quel senso ... certo ....

    Però io infatti dovrei modificare quello script per fare in modo che NON si cancelli il cookie quando viene chiuso il browser (io non voglio che venga cancellato) ... vorrei che non venga cancellato il cookie e che alla riapertura del browser esistendo ancora non venga visualizzato il div ...

    Ma non so come modificarlo quello script per non far cancellare il cookie alla chiusura del browser ...


  • User

    intervengo con un modalità del tutto diversa.

    Ma se usassi i localStorage per registrare la data e poi ogni volta che ricarica la pagina leggi, calcoli la differenza di giorni, e se sono passati più di 365 giorni blocchi il div?

    var firstDate = localStorage.getItem( "firstData" );
    if ( !firstDate ) {
    localStorage.setItem( "firstData", new Date());
    } else {
    // qui calcoli la differenza di giorni e se è maggiore di 1 anno appare il div altrimenti no
    }