2010-08-05 7 views
5

J'ai lu beaucoup de questions sur les cookies jQuery ici et je sais qu'il existe un plugin cookie jQuery (jQuery cookie). Sans faire beaucoup d'enquête, la question: existe-t-il un moyen de déterminer la date d'expiration du cookie?Valeur d'expiration du cookie jQuery

De l'jquery.cookie doc:

/** 
* Get the value of a cookie with the given name. 
* 
* @example $.cookie('the_cookie'); 
* @desc Get the value of a cookie. 
* 
* @param String name The name of the cookie. 
* @return The value of the cookie. 
* @type String 
* 
* @name $.cookie 
* @cat Plugins/Cookie 
* @author Klaus Hartl/[email protected] 
*/ 

ne semble pas que ce plug-in peut le faire?

La raison pour laquelle je veux faire cela est que mon cookie expire après 5 minutes d'inactivité et que je tiens à informer l'utilisateur que sa session est sur le point d'expirer à partir de Javascript.

Répondre

3

À moins que quelque chose a changé, vous ne pouvez pas obtenir cette valeur de un cookie, vous pouvez le définir mais c'est tout, quand il expire il ne s'affichera plus dans la collection de cookies ... mais vous ne pouvez pas voir qu'il expire dans 5 minutes par exemple.

Votre meilleur pari pour quelque chose le long des lignes de l'expiration de la session est d'utiliser setTimeout() avec le retard correct, par exemple si elle est à 5 minutes, vous pouvez alerter à 4 min 30 secondes, comme ceci:

setTimeout(function() { 
    alert("Your session will expire in 30 seconds!"); 
}, 270000); //4.5 * 60 * 1000 
+0

Appréciez la réponse, merci. Puisque je suis en train de mettre à jour le cookie via PHP sur chaque requête de page suivante, vous recommandez que chaque requête de page mette un délai d'attente de cookie.expiration - (un certain temps) pour envoyer un message à l'utilisateur? Je suppose que je ne comprends pas pourquoi vous pouvez définir une date d'expiration mais ne pouvez pas la récupérer. – Chris

+0

@Chris - Je ne suis pas sûr du raisonnement sur celui-là, sachez juste que l'API document/cookie n'a pas de méthodes pour l'obtenir, si vous regardez 'document.cookie' vous verrez qu'il n'est pas dans là :) Et oui sur l'inclusion du timeout sur chaque page, ou juste avoir ce timeout directement dans un fichier JavaScript inclus ... Je ferais une barre de notification ou autre chose qu'une alerte personnellement, mais l'idée est la même :) –

5
$.cookie("example", "foo", { expires: 7 }); 

expireront en 7 jours

il n'y a pas d'API Javascript qui vous permet de vérifier la date d'expiration pour un cookie

+4

Je veux la valeur d'expiration. Je ne demande pas comment définir la valeur d'expiration elle-même. – Chris

+0

il n'y a pas d'API Javascript qui vous permet de vérifier la date d'expiration d'un cookie – maestr0

3

Comme il n'est pas accessible depuis l'API JavaScript, le seul moyen est de le stocker dans le contenu en parallèle avec les métadonnées.

var textContent = "xxxx" 
    var expireDays = 10; 
    var now = new Date().getTime(); 
    var expireDate = now + (1000*60*60*24*expireDays); 
    $.cookie("myCookie", '{"data": "'+ textContent +'", "expires": '+ expireDate +'}', { expires: expireDays }); 

lire ensuite revenir (évidemment, ajouter des garanties dans le cas où le cookie a expiré déjà):

var now = new Date().getTime(); 
var cookie = $.parseJSON($.cookie("myCookie")); 
var timeleft = cookie.expires - now; 
var cookieData = cookie.data; 

Notez ce ne sera pas entièrement fiable si les changements d'horloge du client dans l'intervalle, par exemple, en raison à l'heure d'été.

+0

var cookie = $ .parseJSON ($. cookie ("myCookie")); ne marche pas. @link http://stackoverflow.com/questions/1532193/reading-cookie-expiration-date – user470370

+0

@ user470370: à condition d'inclure Jquery et [le plugin Cookie] (http://www.electrictoolbox.com/jquery -cookies /) et utilisez json correct (j'ai fait une erreur, j'ai oublié les guillemets autour des clés de la chaîne json) ça marche très bien. http://jsfiddle.net/3ddLG/2/ –