2010-08-05 9 views
5

He leído muchas preguntas sobre cookies jQuery aquí y sé que hay un complemento de cookies jQuery (jQuery cookie). Sin hacer mucha investigación, la pregunta: ¿hay alguna manera de determinar la fecha de caducidad de la cookie?valor de caducidad de la cookie de jQuery

Desde el doc jquery.cookie:

/** 
* 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] 
*/ 

no parece que este plugin puede hacerlo?

La razón por la que quiero hacer esto es que mi cookie expira después de 5 minutos de inactividad y me gustaría notificar al usuario que su sesión está por caducar desde Javascript.

Respuesta

3

A menos que algo ha cambiado, no se puede obtener este valor de una cookie, puede configurarlo, pero eso es todo, cuando caduque, ya no aparecerá en la colección de cookies ... pero no puede ver que expira en 5 minutos, por ejemplo.

Su mejor apuesta para algo en la línea de la caducidad de sesión es utilizar setTimeout() con el retardo correcto, por ejemplo si se trata de 5 minutos, es posible que desee para alertar a 4 minutos 30 segundos, de esta manera:

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

Agradezca la respuesta, gracias. Dado que estoy actualizando la cookie a través de PHP en cada solicitud de página posterior, usted está recomendando que solo en cada solicitud de página establezca un tiempo de espera de cookie.expiration (tiempo) para enviar un mensaje al usuario. Supongo que simplemente no entiendo por qué puedes establecer un vencimiento pero no puedes recuperarlo. – Chris

+0

@Chris - No estoy seguro del razonamiento sobre eso, solo sé que el documento/cookie API no tiene métodos para obtenerlo, si miras 'document.cookie' verás que no está en there :) Y sí sobre incluir el tiempo de espera en cada página, o simplemente tener ese tiempo de espera directamente en un archivo JavaScript incluido ... Haría una barra de notificaciones o algo además de una alerta personal, pero la idea es la misma :) –

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

expirará en 7 días

no hay ninguna API Javascript que le permite comprobar la fecha de caducidad de una cookie

+4

Quiero el valor de caducidad. No estoy preguntando cómo establecer el valor de caducidad en sí. – Chris

+0

no hay una API de Javascript que le permita verificar la fecha de caducidad de una cookie – maestr0

3

Como no se puede acceder desde la API de JavaScript, la única forma es almacenarla en el contenido en paralelo con los metadatos.

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 }); 

A continuación, lea de nuevo (obviamente, añadir garantías en caso de la cookie ya expiró):

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

Nota esto no será del todo fiable si los cambios de reloj de cliente en el ínterin, por ejemplo, debido a DST.

+0

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

+0

@ user470370: Siempre que incluya Jquery y [el complemento de Cookie] (http://www.electrictoolbox.com/jquery) -cookies /) y usar json correcto (cometí un error, olvidé las comillas alrededor de las teclas de la cadena json) funciona muy bien. http://jsfiddle.net/3ddLG/2/ –

Cuestiones relacionadas