代码之家  ›  专栏  ›  技术社区  ›  Chris

jQuery cookie过期值

  •  6
  • Chris  · 技术社区  · 14 年前

    我在这里读了很多jQuery cookie问题,知道有一个jQuery cookie插件( jQuery cookie ). 在没有做太多调查的情况下,问题是:有没有办法确定饼干的有效期?

    从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/klaus.hartl@stilbuero.de
    */
    

    好像这个插件做不到?

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

    3 回复  |  直到 11 年前
        1
  •  3
  •   Nick Craver    14 年前

    除非发生了变化,否则无法获得此值

    setTimeout() 如果延迟正确,例如5分钟,您可能希望在4分30秒时发出警报,如下所示:

    setTimeout(function() {
      alert("Your session will expire in 30 seconds!");
    }, 270000);  //4.5 * 60 * 1000
    
        2
  •  7
  •   SF.    11 年前

    由于无法从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),那么这将不是完全可靠的。

        3
  •  6
  •   maestr0    11 年前
    $.cookie("example", "foo", { expires: 7 });
    

    7天后到期

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