2011-07-03 1 views
13

Possible en double:
What is the “best” way to get and set a single cookie value using JavaScriptComment puis-je mettre un cookie à expiration après x jours avec ce code que j'ai?

J'ai donc ce code (que je ne l'ai pas) ce qui en fait essentiellement un récipient avec un X, alors quand je presse le X, la div le conteneur se ferme. Toutefois, lorsque vous actualisez la page, le conteneur div réapparaîtra à nouveau.

Comment puis-je faire en sorte que lorsque la personne appuie sur le bouton X, la personne ne verra plus jamais le conteneur div encore (ou pour une durée déterminée de 30 jours) sur cette page? Je veux aller un peu plus loin, si possible, et faire en sorte que lorsque la personne appuie sur le bouton X, il/elle ne verra plus jamais le conteneur div à travers mon site, car je prévois de mettre en œuvre la même div conteneur sur mon site.

J'espère que ce n'est pas trop confus, et que quelqu'un peut m'aider. Merci!

Code HTML:

<div id="bottom_ad"> 
    <div id="close_ad" onclick="close_bottom_ad();">X</div> 
    <!-- Ad Content --> 
</div> 

CSS Code: (. Placer au fond du fichier, avant de tag)

#bottom_ad 
{ 
    position: absolute; 
    right: 0; 
    bottom: 0; 
    left: 0; 
    height: 80px; 
    background: #000; 
} 
#close_ad 
{ 
    position: absolute; 
    top: 8px; 
    right: 8px; 
    width: 15px; 
    height: 15px; 
    color: #fff; 
} 

JavaScript code:

<script type="text/javascript"> 
    // I may have sorta kinda taken this function from W3Schools. :S 
    function getCookie(c_name) 
    { 
     var i,x,y,ARRcookies=document.cookie.split(";"); 
     for (i=0;i<ARRcookies.length;i++) 
     { 
      x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("=")); 
      y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1); 
      x=x.replace(/^\s+|\s+$/g,""); 
      if (x==c_name) 
      { 
       return unescape(y); 
      } 
     } 
    } 

    var ad_cookie = getCookie("closedAd"); 

    if (ad_cookie != null && ad_cookie != "") 
    { 
     document.getElementById("bottom_ad").style.display="none"; 
    } 

    function close_bottom_ad() 
    { 
     document.getElementById("bottom_ad").style.display="none"; 
     document.cookie = "closedAd=true;"; 
    } 
</script> 
+0

Ce n'est pas? Je ne sais pas. Je ne touche jamais Javascript, mais je veux cet effet. Et je n'ai jamais vu ce fil dans ma vie. – user815598

+0

Eh bien, vous voulez savoir comment définir un cookie droit? Alors je l'ai cherché ici et j'ai trouvé cette question. Je pense que la réponse acceptée vous aidera et fait ce que vous voulez. J'ai donc décidé de voter pour la fermeture en tant que doublon. –

+0

Si vous placez le code HTML comme vous l'avez sur toutes les pages AVEC le script, l'annonce ne doit jamais s'afficher tant que les cookies n'ont pas été supprimés. Vous aurez besoin d'ajouter un chemin au cookie si vous avez des pages qui ne sont pas dans le même répertoire que les autres: 'document.cookie =" closedAd = true; path =/";' Voir le fichier createCookie de l'autre pour une date d'expiration date – mplungjan

Répondre

23

Pour définir un Expiration de 30 jours sur votre cookie, vous devez ajouter une heure d'expiration au cookie. Voici une fonction cookie assez simple qui définit un cookie pour N jours:

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

En fixant une date d'expiration appropriée dans le cookie, il sera automatiquement supprimé à ce moment-là. Puis, lorsque votre page se charge (vous devrez attendre que la page ait fini de charger avant d'essayer de la modifier), vous pouvez vérifier si votre cookie closeAd est activé et si c'est le cas, exécutez le code pour masquer le cookie. un d. Pour une expérience de visionnage sans scintillement (donc l'annonce ne s'affiche pas d'abord ouverte, puis fermée), vous pouvez soit commencer avec l'annonce masquée et l'afficher uniquement s'il n'y a pas de cookie. Ou vous ne pouvez l'ajouter dynamiquement à la page s'il n'y a pas de cookie.

Questions connexes