2012-02-15 3 views
0

Je n'ai absolument aucune connaissance de cookies ...jQuery changement d'expiration des cookies de la valeur temporelle de la valeur de la session

J'utilise SlideDeck sur mon site, et ils fournissent un code pour permettre aux personnes qui reviennent à la page avec le slideeck est activé pour afficher la dernière diapositive affichée au lieu de revenir au début.

Cependant, il est défini pour une semaine - ce que je voudrais faire est de le changer en session, de sorte que lorsque le navigateur se ferme, le cookie n'est plus valide. Est-ce possible avec ce script?

J'ai lu que si vous changez l'expiration à 0, il va faire session sur la base - alors j'ai changé:

else { 
     var expires = "0"; 
    } 

Mais je ne pense pas que fonctionne en raison de la déclaration ci-dessus si il.

// The default slide to start on is 0. 
    var startingSlide = 0; 
    // If we find a cookie with the name that we previously saved, use it. 
    if(readCookie('slideDeckDemoCurrentSlide')){ 
    // This overrides the default value of 0 if we find a cookie. 
    startingSlide = readCookie('slideDeckDemoCurrentSlide'); 
    } 
    var myDeck = $('.slidedeck').slidedeck({ 
    autoPlay: false, 
    cycle: true, 
    slideTransition: 'slide', 
    touch: false, 
    hideSpines: true, 
    start: startingSlide, // tell the Deck where to start 
    complete: function(deck){ 
     // Here we will set a cookie for one week. 
     // This cookie will store the deck.current value. 
     //createCookie(name,value,days) 
     createCookie('slideDeckDemoCurrentSlide',deck.current,7) 
    } 
    }); 




    function createCookie(name,value,days) { 
    if (days) { 
     var date = new Date(); 
     date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); 
     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[i]; 
     while (c.charAt(0)===' '){ c = c.substring(1,c.length); } 
     if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); 
    } 
    return null; 
    } 

    function eraseCookie(name) { 
    createCookie(name,"",-1); 
    } 
+0

Les sessions sont basées sur le serveur, jQuery est basé sur le client. Quel est votre logiciel serveur? PHP? ASPIC? – CompanyDroneFromSector7G

+0

N'oubliez pas non plus que la fermeture du navigateur ne fermera pas nécessairement la session. – CompanyDroneFromSector7G

+0

Mon ignorance transparaît. Le côté serveur est ASP - mais je devrais m'en tenir à jQuery et l'incorporer dans ce script. – JayDee

Répondre

1

Cookies de session et navigateur Les cookies n'ont rien en commun. Particulièrement Javascript est exécuté sur le CLIENT de sorte que vous avez seulement accès aux cookies de navigateur. Vous pouvez utiliser .unload() pour détecter si le navigateur est fermé ou la page a été fermée, puis supprimer le cookie:

$(window).unload(function() { //delete cookie }); 
+0

Alors est-ce que j'ajouterais ceci à la fin du script ou au début? $ (fenêtre) .unload (function() {eraseCookie (nom) { createCookie (nom, "", - 1); }}); – JayDee

+0

Je l'ajouterais dans la section $ (document) .ready (function() {}) mais ce n'est pas vraiment une différence là où vous l'avez mise! –

+0

Il tue le cookie dès qu'il quitte la page avec la fonction de déchargement. Je suppose que je vais devoir regarder le plugin jquery cookies et tenter une réécriture du script fourni ... – JayDee

1

Si vous voulez créer un cookie de session ne pas utiliser l'expires option. Ce est de la documentation officielle de "jquery cookie":

Définir vie du cookie. La valeur peut être un nombre qui sera interprété en jours à partir de l'heure de création ou d'un objet Date. Si est omis, le cookie devient un cookie de session.

Si vous définissez l'expiration: 0, cela signifie que le cookie ne sera pas sauvegardé du tout.

Questions connexes