2010-08-05 95 views
5

我已经阅读了很多jQuery cookie问题,并知道这里有一个jQuery cookie插件(jQuery cookie)。没有做太多的调查,问题是:有没有一种方法可以确定cookie的到期日期?jQuery Cookie过期值

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

似乎并不认为这个插件可以做到这一点?

我想这样做的原因是我的cookie在5分钟不活动后过期,并且Id想通知用户他们的会话即将从Javascript过期。

回答

3

除非事情已经改变,你不能把这个值一个cookie,你可以设置它,但就是这样,当它过期时,它不会再显示在Cookie集合中,但是你不能看到它在5分钟内过期。

你沿着会话终止线的东西最好的办法是使用setTimeout()与正确的延迟,例如,如果是5分钟,你可能要在4分钟提醒30秒这样的:

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

欣赏答案,谢谢。由于我在每个后续页面请求上通过PHP更新cookie,因此建议我只在每个页面请求上设置cookie.expiration的超时时间 - (某个时间)向用户发送消息?我想我只是不明白为什么你可以设置到期,但无法取回。 – Chris 2010-08-05 17:31:32

+0

@Chris - 我不确定这个推理,只知道文档/ cookie API没有获取它的方法,如果你看看'document.cookie',你会发现它不在那里:)是的,包括每个页面上的超时,或者直接在一个包含的JavaScript文件中有该超时...我会做一个通知栏或除个人提醒之外的东西,但这个想法是一样的:) – 2010-08-05 17:38:54

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

将在7天后

没有的JavaScript API,允许你检查的终止日期,饼干过期

+4

我想要过期值。我不问如何设置到期价值本身。 – Chris 2010-08-05 17:14:12

+0

没有Javascript API,允许您检查cookie的失效日期 – maestr0 2013-11-10 22:31:09

3

由于无法从JavaScript API访问它,唯一的方法是将其与元数据并行存储在内容中。

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

然后读回(很明显,增加保障的情况下,该Cookie已经过期):

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

注意这不会是完全可靠的,如果在此期间,客户端时钟的变化,也就是说,由于到DST。

+0

var cookie = $ .parseJSON($。cookie(“myCookie”));不起作用。 @link http://stackoverflow.com/questions/1532193/reading-cookie-expiration-date – user470370 2013-09-24 08:32:07

+0

@ user470370:提供您包括Jquery和[Cookie插件](http://www.electrictoolbox.com/jquery -cookies /)并使用正确的json(我犯了一个错误,忘记了json字符串键的引号),它工作得很好。 http://jsfiddle.net/3ddLG/2/ – 2013-09-24 09:33:06