• Moderatore

    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 :ciauz:


  • User Attivo

    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 🙂


  • Moderatore

    Non sono così bravo come te mi aiuteresti?
    Grazie mille :vai:


  • User Attivo

    con un po' di elasticità per la formattazione errata del forum, utilizza questo codice.
    grazie a Jarno

    
    FILE: cookies.js
    /*
    CookieLeggi
    OUTPUT&#58; 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&#58; var AAA = CookieLeggi&#40;nome&#41; || "anonimo";
    INPUT&#58;  &#40;'Nome del Cookie'&#41;
    
    CookieScrivi
    OUTPUT&#58; restituisce TRUE o FALSE a seconda che sia avvenuta o no correttamente la scrittura; la scrittura ha un ordine&#58; dal più specifico al più generico "/"; es&#58; if &#40;!CookieScrivi&#40;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&#41;&#41; alert&#40;'Scrittura non riuscita'&#41;;
    INPUT&#58;  &#40;'Nome del Cookie', 'Valore', 'UdM&#58; anni/mesi/giorni/ore/minuti/secondi/GMT', 'tempo', 'path&#58; "\" per tutto "" per attuale e figli', 'Domain', 'Secure&#58; per criptare basta "1" o "secure" mentre vuoto o altro per lasciare così'&#41;  
    
    CookieCancella
    OUTPUT&#58; 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&#58; if &#40;!CookieCancella&#40;document.cok.ckNome.value&#41;&#41; alert&#40;'Cancellazione non riuscita'&#41;
    INPUT&#58;  &#40;'Nome del Cookie', 'Path&#58; "\" per tutto "" per attuale e figli', 'Domain'&#41;
    */
    
    function CookieLeggi&#40;CookieNome&#41;
    	&#123;
    	if &#40;CookieNome.length==0&#41; return null;
    	var PosizioneIniziale = document.cookie.indexOf&#40;CookieNome+"="&#41;;
    		if &#40;PosizioneIniziale == -1&#41; return null;
    		PosizioneIniziale += CookieNome.length+1;  // restituisce la posizione del primo carattere del valore della variabile-cookie
    	var PosizioneFinale = document.cookie.indexOf&#40;";",PosizioneIniziale&#41;;
    		if &#40;PosizioneFinale == -1&#41; PosizioneFinale = document.cookie.length;  // serve perchè se il cookie è l'ultimo non avrà ";"
    	return unescape&#40;document.cookie.substring&#40;PosizioneIniziale,PosizioneFinale&#41;&#41;;
    	&#125;
    
    function CookieScrivi&#40;name,value,expiresUdM,expires,path,domain,secure&#41;
    	&#123;
    	if &#40;!name || !value&#41; &#123; return false &#125;  // 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 &#40;&#40;expiresUdM && expires&#41; && &#40;expiresUdM!='GMT'&#41;&#41; &#123;
    		var ExpiresMillisec = ExpiresDate = Oggi = new Date&#40;&#41;;
    		switch &#40;expiresUdM&#41; &#123;    // calcola i JS-millisecondi del momento di scadenza
    			case "anni"&#58;    ExpiresMillisec=Oggi.getTime&#40;&#41;+expires*365*24*60*60*1000; break;
    			case "mesi"&#58;    ExpiresMillisec=Oggi.getTime&#40;&#41;+expires*31*24*60*60*1000; break;
    			case "giorni"&#58;  ExpiresMillisec=Oggi.getTime&#40;&#41;+expires*24*60*60*1000; break;
    			case "ore"&#58;     ExpiresMillisec=Oggi.getTime&#40;&#41;+expires*60*60*1000; break;
    			case "minuti"&#58;  ExpiresMillisec=Oggi.getTime&#40;&#41;+expires*60*1000; break;
    			case "secondi"&#58; ExpiresMillisec=Oggi.getTime&#40;&#41;+expires*1000; break;
    			default&#58;        ExpiresMillisec=Oggi.getTime&#40;&#41;+expires;  // ha poco senso ma qlcs ci andava messo
    			&#125;
    		ExpiresDate.setTime&#40;ExpiresMillisec&#41;;   // converte JS-millisecondi in Date
    		expires = ExpiresDate.toGMTString&#40;&#41;; &#125;  // converte Date in GMT-stringa
    	secure = &#40;secure=="1" || secure==1 || secure=="secure"&#41; ? 1 &#58; "";
    	document.cookie = name + "=" +escape&#40;value&#41; +
    	        &#40; &#40;expiresUdM && expires&#41; ? "; expires=" + expires &#58; ""&#41; +
    	        &#40; &#40;path&#41; ? "; path=" + path &#58; ""&#41; + 
    	        &#40; &#40;domain&#41; ? "; domain=" + domain &#58; ""&#41; +
    	        &#40; &#40;secure&#41; ? "; secure" &#58; ""&#41;;
    
    	if &#40;CookieLeggi&#40;name&#41;==null && secure!=1&#41; &#123; return false &#125; else &#123; return true &#125;
    	&#125;
    
    
    function CookieCancella&#40;CookieNome,CookiePath,CookieDomain&#41;
    	&#123;
    	var DoveSiTrovaPrima = document.cookie.indexOf&#40;CookieNome&#41;;
    	if&#40;DoveSiTrovaPrima==-1&#41; &#123;   // se non c'è si taglia corto
    		return true;
    	&#125; else &#123;
    		if&#40; CookiePath &&  CookieDomain&#41;
    			&#123; CookieScrivi&#40;CookieNome,'cancellato','anni',-1,CookiePath,CookieDomain&#41;; &#125;
    		if&#40; CookiePath && !CookieDomain&#41;
    			&#123; CookieScrivi&#40;CookieNome,'cancellato','anni',-1,CookiePath&#41;; &#125;
    		if&#40;!CookiePath &&  CookieDomain&#41;
    			&#123; CookieScrivi&#40;CookieNome,'cancellato','anni',-1,'',CookieDomain&#41;; &#125;
    		if&#40;!CookiePath && !CookieDomain&#41;
    			&#123; CookieScrivi&#40;CookieNome,'cancellato','anni',-1&#41;; &#125;
    		var DoveSiTrovaDopo = document.cookie.indexOf&#40;CookieNome&#41;;
    		if&#40;DoveSiTrovaPrima!=DoveSiTrovaDopo&#41; &#123; return true &#125; else &#123; return false &#125; // 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
    	&#125; &#125;
    // 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&#58; c'è chi per cancellare scrive la scadenza "Thu, 01 Jan 1970 00&#58;00&#58;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&#58; 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&#40;CookieNome&#41;
    	&#123;
    	// conta il numero di cloni
    	if&#40;CookieNome&#41; &#123;
    		var i = cloni = 0;
    		while &#40; i!=-1 &#41; &#123;
    			i = document.cookie.indexOf&#40;CookieNome,i+1&#41;;
    			if &#40;i!=-1&#41; cloni++; &#125;
    	&#125; else &#123;
    		var cloni = ''; &#125;
    	// elabora il testo di output
    	var valore = &#40;CookieLeggi&#40;CookieNome&#41;!=null&#41; ? CookieLeggi&#40;CookieNome&#41; &#58; '';
    	var testo= 'STRINGA COOKIES\nContenuto= \"'+unescape&#40;document.cookie&#41;+'\"\n\nSINGOLO COOKIE\nNome= \"'+CookieNome+'\"\nValore= \"'+ valore +'\"\nRipetizioni= '+cloni;
    	alert&#40;testo&#41;;
    	&#125;
    // non è possibile leggere le singole proprietà&#58; expires, path, domain , secure
    
    
    
    FILE&#58; 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&#40;nome&#41;
    	&#123;
    	document.getElementById&#40;'tes'&#41;.innerHTML = unescape&#40;document.cookie&#41;;
    	document.getElementById&#40;'nom'&#41;.innerHTML = nome;
    	document.getElementById&#40;'con'&#41;.innerHTML = CookieLeggi&#40;nome&#41;;
    	&#125;
    </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, &#91;vuoto&#93; per il path specifico e figli</TD><TD id="pat"></TD></TR>
    	<TR><TD>DOMINIO</TD><TD><input type="text" name="ckDom" size=15>
    &#91; vuoto &#93; 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 &#40;!CookieScrivi&#40;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&#41;&#41; alert&#40;'Scrittura non riuscita'&#41;;">
    	<input type="button" value="LEGGI" onclick="StampaCookie&#40;document.cok.ckNome.value&#41;">
    	<input type="button" value="CANCELLA" onclick="if &#40;!CookieCancella&#40;document.cok.ckNome.value,document.cok.ckPat.value,document.cok.ckDom.value&#41;&#41; alert&#40;'Cancellazione non riuscita&#58; forse ce ne sono più di uno o le proprietà non coincidono'&#41;;">
    	<input type="button" value="ALERT" onclick="CookieVisualizza&#40;document.cok.ckNome.value&#41;">
    </form>
    
    
    </BODY>
    </HTML>