- Home
- Categorie
- Coding e Sistemistica
- HTML e CSS
- Problema con popup/layer
-
Problema con popup/layer
Ciao a tutti il mio problema è questo:
ho create un layer ma vorrei che si a prisse una volta al giorno per utente.
Come posso fare?
Vi mando il codice che ho usato:<div id="adv" align="center"><span class="Stile9"><span class="Stile12"> <span class="Stile19"> BLA BLA BLA!!!!</span></span><span class="Stile16"> <span class="Stile11"> <span class="Stile12"> BLA BLA BLA</span></span></span></span><span class="Stile17"> BLA BLA BLA <span class="Stile21">su</span> </span><span class="Stile13"> BLA BLA BLA BLA BLA BLA BLA BLA BLA <span class="Stile20"> BLA BLA BLA BLA BLA BLA </span> </span> <a href="#" onclick="this.parentNode.style.visibility='hidden'; return false""> Chiudi la finestra</a></div>
Grazie dell'eventuale aiuto
-
Devi creare un cookie dove registri l'ultima volta ke è stato visualizzato il popup, se nel cookie c'è la data di oggi non lo fai visualizzare altrimenti si
-
Non sono così bravo come te mi aiuteresti?
Grazie mille
-
con un po' di elasticità per la formattazione errata del forum, utilizza questo codice.
grazie a JarnoFILE: cookies.js /* CookieLeggi OUTPUT: restituisce il valore, se il cookie non c'è restituisce "null"; se ne sono presenti più di 1 mostra il primo, ovvero quello più specifico; es: var AAA = CookieLeggi(nome) || "anonimo"; INPUT: ('Nome del Cookie') CookieScrivi OUTPUT: restituisce TRUE o FALSE a seconda che sia avvenuta o no correttamente la scrittura; la scrittura ha un ordine: dal più specifico al più generico "/"; es: if (!CookieScrivi(document.cok.ckNome.value,document.cok.ckDato.value,document.cok.exSimb.value,document.cok.exDato.value,document.cok.ckPat.value,document.cok.ckDom.value,document.cok.ckSec.value)) alert('Scrittura non riuscita'); INPUT: ('Nome del Cookie', 'Valore', 'UdM: anni/mesi/giorni/ore/minuti/secondi/GMT', 'tempo', 'path: "\" per tutto "" per attuale e figli', 'Domain', 'Secure: per criptare basta "1" o "secure" mentre vuoto o altro per lasciare così') CookieCancella OUTPUT: restituisce TRUE o FALSE a seconda che sia avvenuta o no correttamente la cancellazione; restituire FALSE quando rimane cmq un cookie con quel nome e ciò può essere perchè le proprietà non coincidono o perchè ce ne erano più di uno con lo stesso nome; es: if (!CookieCancella(document.cok.ckNome.value)) alert('Cancellazione non riuscita') INPUT: ('Nome del Cookie', 'Path: "\" per tutto "" per attuale e figli', 'Domain') */ function CookieLeggi(CookieNome) { if (CookieNome.length==0) return null; var PosizioneIniziale = document.cookie.indexOf(CookieNome+"="); if (PosizioneIniziale == -1) return null; PosizioneIniziale += CookieNome.length+1; // restituisce la posizione del primo carattere del valore della variabile-cookie var PosizioneFinale = document.cookie.indexOf(";",PosizioneIniziale); if (PosizioneFinale == -1) PosizioneFinale = document.cookie.length; // serve perchè se il cookie è l'ultimo non avrà ";" return unescape(document.cookie.substring(PosizioneIniziale,PosizioneFinale)); } function CookieScrivi(name,value,expiresUdM,expires,path,domain,secure) { if (!name || !value) { return false } // se uno dei 2 valori è vuoto evita la scrittura, perchè, mentre in NN esiste il cookie vuoto "nome=;", in IE viene scritto "nome;" e quindi al check non risulta e inoltre occupa spazio if ((expiresUdM && expires) && (expiresUdM!='GMT')) { var ExpiresMillisec = ExpiresDate = Oggi = new Date(); switch (expiresUdM) { // calcola i JS-millisecondi del momento di scadenza case "anni": ExpiresMillisec=Oggi.getTime()+expires*365*24*60*60*1000; break; case "mesi": ExpiresMillisec=Oggi.getTime()+expires*31*24*60*60*1000; break; case "giorni": ExpiresMillisec=Oggi.getTime()+expires*24*60*60*1000; break; case "ore": ExpiresMillisec=Oggi.getTime()+expires*60*60*1000; break; case "minuti": ExpiresMillisec=Oggi.getTime()+expires*60*1000; break; case "secondi": ExpiresMillisec=Oggi.getTime()+expires*1000; break; default: ExpiresMillisec=Oggi.getTime()+expires; // ha poco senso ma qlcs ci andava messo } ExpiresDate.setTime(ExpiresMillisec); // converte JS-millisecondi in Date expires = ExpiresDate.toGMTString(); } // converte Date in GMT-stringa secure = (secure=="1" || secure==1 || secure=="secure") ? 1 : ""; document.cookie = name + "=" +escape(value) + ( (expiresUdM && expires) ? "; expires=" + expires : "") + ( (path) ? "; path=" + path : "") + ( (domain) ? "; domain=" + domain : "") + ( (secure) ? "; secure" : ""); if (CookieLeggi(name)==null && secure!=1) { return false } else { return true } } function CookieCancella(CookieNome,CookiePath,CookieDomain) { var DoveSiTrovaPrima = document.cookie.indexOf(CookieNome); if(DoveSiTrovaPrima==-1) { // se non c'è si taglia corto return true; } else { if( CookiePath && CookieDomain) { CookieScrivi(CookieNome,'cancellato','anni',-1,CookiePath,CookieDomain); } if( CookiePath && !CookieDomain) { CookieScrivi(CookieNome,'cancellato','anni',-1,CookiePath); } if(!CookiePath && CookieDomain) { CookieScrivi(CookieNome,'cancellato','anni',-1,'',CookieDomain); } if(!CookiePath && !CookieDomain) { CookieScrivi(CookieNome,'cancellato','anni',-1); } var DoveSiTrovaDopo = document.cookie.indexOf(CookieNome); if(DoveSiTrovaPrima!=DoveSiTrovaDopo) { return true } else { return false } // se Prima<>Dopo vuol dire che qualcosa è stato fatto; si guarda a questo e non alla semplice verifica di lettura perchè in presenza di 2 cookie omonimi la verifica fallirebbe } } // i browser cancellano i cookie nel momento preciso in cui vengono scritti con un qls "expires" scaduto // o nel momento in cui recuperano i cookies con "document.cookie" e trovano che "expires" è scaduto o non esiste // nb: c'è chi per cancellare scrive la scadenza "Thu, 01 Jan 1970 00:00:01 GMT" ma se qualcosa è errato, mentre NN ricoscosce abbastanza tutto, IE no e quindi questo invece che cancellare un cookie ne scrive uno che non scade mai // nb: non è vero che IE cancella i cookie se si inserisce in contenuto vuoto, è solo un'apparenza, poichè tale contenuto è salvato come "nome;" che quindi nella lettura non viene trovato perchè si cerca "nome=;" quindi sembra cancellato invece c'è, occupa spazio, ed è inutilizzato function CookieVisualizza(CookieNome) { // conta il numero di cloni if(CookieNome) { var i = cloni = 0; while ( i!=-1 ) { i = document.cookie.indexOf(CookieNome,i+1); if (i!=-1) cloni++; } } else { var cloni = ''; } // elabora il testo di output var valore = (CookieLeggi(CookieNome)!=null) ? CookieLeggi(CookieNome) : ''; var testo= 'STRINGA COOKIES\nContenuto= \"'+unescape(document.cookie)+'\"\n\nSINGOLO COOKIE\nNome= \"'+CookieNome+'\"\nValore= \"'+ valore +'\"\nRipetizioni= '+cloni; alert(testo); } // non è possibile leggere le singole proprietà: expires, path, domain , secure
FILE: cookies.html <HTML> <HEAD> <TITLE>Javascript - Cookies - prova</TITLE> <SCRIPT language='JavaScript' src="cookies.js" type=text/JavaScript></SCRIPT> <SCRIPT type="text/javascript" language="JavaScript"> // eseguo subito le operazioni d'utilità generale function StampaCookie(nome) { document.getElementById('tes').innerHTML = unescape(document.cookie); document.getElementById('nom').innerHTML = nome; document.getElementById('con').innerHTML = CookieLeggi(nome); } </SCRIPT> </HEAD> <BODY> <form name="cok"> <TABLE border=1> <TR><TD>**VARIABILE</TD><TD>**INPUT</TD><TD>**OUTPUT</TD></TR> <TR><TD>TESTO INTERO</TD><TD></TD><TD id="tes"></TD></TR> <TR><TD>NOME</TD><TD><input type="text" name="ckNome" size=15></TD><TD id="nom"></TD></TR> <TR><TD>CONTENUTO</TD><TD><input type="text" name="ckDato" size=15></TD><TD id="con"></TD></TR> <TR><TD>EXPIRES</TD><TD><input type="text" name="exSimb" size=2><input type="text" name="exDato" size=11> anni, mesi, giorni, ore, minuti, secondi, GTM</TD><TD id="exp"></TD></TR> <TR><TD>PATH</TD><TD><input type="text" name="ckPat" size=15> "/"per tutto il dominio, [vuoto] per il path specifico e figli</TD><TD id="pat"></TD></TR> <TR><TD>DOMINIO</TD><TD><input type="text" name="ckDom" size=15> [ vuoto ] per l'attuale dominio, altrimenti va spicificato ".dominio.it"</TD><TD id="dom"></TD></TR> <TR><TD>SECURE</TD><TD><input type="text" name="ckSec" size=15> 1=cripta; altro=non criptato</TD><TD id="sec"></TD></TR> </TABLE> <input type="button" value="SCRIVI" onclick="if (!CookieScrivi(document.cok.ckNome.value,document.cok.ckDato.value,document.cok.exSimb.value,document.cok.exDato.value,document.cok.ckPat.value,document.cok.ckDom.value,document.cok.ckSec.value)) alert('Scrittura non riuscita');"> <input type="button" value="LEGGI" onclick="StampaCookie(document.cok.ckNome.value)"> <input type="button" value="CANCELLA" onclick="if (!CookieCancella(document.cok.ckNome.value,document.cok.ckPat.value,document.cok.ckDom.value)) alert('Cancellazione non riuscita: forse ce ne sono più di uno o le proprietà non coincidono');"> <input type="button" value="ALERT" onclick="CookieVisualizza(document.cok.ckNome.value)"> </form> </BODY> </HTML>