2010-08-05 14 views
5

Ich habe eine Menge von jQuery-Cookie-Fragen hier gelesen und weiß, dass es ein jQuery-Cookie-Plugin (jQuery cookie) gibt. Ohne viel Nachforschungen zu machen, stellt sich die Frage: Gibt es eine Möglichkeit, das Verfallsdatum von Cookies zu bestimmen?jQuery Cookie-Ablaufwert

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

Scheint nicht, dass dieses Plugin kann es tun?

Der Grund, warum ich das möchte, ist, dass mein Cookie nach 5 Minuten Inaktivität abläuft und ich dem Benutzer mitteilen möchte, dass seine Sitzung bald von Javascript abläuft.

Antwort

3

Es sei denn, etwas geändert hat, können Sie diesen Wert nicht erhalten aus ein Cookie, Sie können es setzen, aber das ist es, wenn es abläuft, wird es nur nicht mehr in der Cookie-Sammlung angezeigt .... aber Sie können nicht sehen, dass es in 5 Minuten zum Beispiel abläuft.

Ihre beste Wette für etwas entlang der Linien von Sitzungsablauf ist setTimeout() mit der richtigen Verzögerung zu verwenden, zum Beispiel, wenn es 5 Minuten sind, können Sie wie folgt auf 4 min 30 Sekunden alarmieren wollen:

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

Schätzen Sie die Antwort, danke. Da ich den Cookie über PHP bei jeder folgenden Seitenanforderung aktualisiere, empfiehlst du, dass ich nur auf jeder Seitenanforderung eine Zeitüberschreitung von cookie.expiration festlege - (irgendwann) um eine Nachricht an den Benutzer auszulösen? Ich glaube, ich verstehe einfach nicht, warum Sie ein Ablaufdatum festlegen können, aber es nicht zurückbekommen. – Chris

+0

@Chris - Ich bin mir nicht sicher, ob die Argumentation dazu passt, nur dass die document/cookie-API keine Methoden hat, um sie zu bekommen. Wenn Sie sich "document.cookie" anschauen, werden Sie sehen, dass es nicht darin ist da :) Und ja auf die Zeitüberschreitung auf jeder Seite, oder nur diese Zeitüberschreitung direkt in einer enthaltenen JavaScript-Datei ... Ich würde eine Benachrichtigungsleiste oder etwas außer einer Warnung persönlich tun, aber die Idee ist die gleiche :) –

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

Wird in 7 Tagen

verfallen gibt es keine Javascript-API, die Sie das Ablaufdatum für einen Cookie überprüfen können

+4

Ich möchte den Ablaufwert. Ich frage nicht, wie man den Ablaufwert selbst setzt. – Chris

+0

Es gibt keine Javascript-API, mit der Sie das Ablaufdatum für einen Cookie überprüfen können – maestr0

3

Da auf die JavaScript-API nicht zugegriffen werden kann, besteht die einzige Möglichkeit darin, sie parallel zu den Metadaten im Inhalt zu speichern.

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

es dann wieder lesen (natürlich, fügen Garantien im Falle der Cookie bereits abgelaufen):

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

Hinweis: Das wird nicht ganz zuverlässig sein, wenn die Client-Takt Änderungen in der Zwischenzeit, sagen wir, auf Grund nach DST.

+0

var cookie = $ .parseJSON ($ .cookie ("myCookie")); funktioniert nicht. @link http://StackOverflow.com/Questions/1532193/Reading-Cookie-Expiration-Date – user470370

+0

@ User470370: vorausgesetzt, Sie enthalten Jquery und [das Cookie-Plugin] (http://www.electrictoolbox.com/jquery -cookies /) und benutze korrekte json (ich machte einen Fehler, vergaß Zitate um Tasten der JSON-Zeichenfolge) es funktioniert gut. http://jsfiddle.net/3ddLG/2/ –