jQuery cookie到期值

时间:2010-08-05 16:47:33

标签: jquery cookies

我已经在这里阅读了很多jQuery cookie问题,并且知道有一个jQuery cookie插件(jQuery cookie)。没有做太多调查,问题是:有没有办法确定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/klaus.hartl@stilbuero.de
*/

这个插件似乎不能做到吗?

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

3 个答案:

答案 0 :(得分:6)

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

将在7天后过期

没有允许您检查Cookie的到期日期的Javascript API

答案 1 :(得分:3)

除非有些内容发生了变化,否则你无法从中获取此值,你可以设置它,但就是它,当它到期时它就不会再出现在cookie集合中了。 ...但你不能看到它在5分钟后过期。

对于会话过期的最佳选择是使用setTimeout()并使用正确的延迟,例如,如果是5分钟,您可能需要在4分30秒时发出警报,如下所示:

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

答案 2 :(得分: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),这将不完全可靠。