2013-10-01 21 views
8

Ich weiß, dass diese Frage tausend Mal gestellt wurde, aber keine der Antworten gibt mir wirklich, wonach ich suche. Ich verwende jQuery cookie, um einige Informationen zu speichern, aber ich möchte, dass sie ablaufen, wenn der Browser geschlossen wird. window.unload kein gangbarer Weg ist (sprich: nicht funktioniert.)Können jQuery-Cookies wie Sitzungsvariablen ablaufen?

Meine Frage lautet: Ist es tatsächlich möglich, legen Sie die Cookies müssen erlöschen, wenn der Browser geschlossen wird, wie eine Sitzung? Wenn ja, weiß jemand wie?

Update: Es stellt sich heraus, es ist ziemlich einfach, anstatt Ablaufdatum zu übergeben: 0 (was nicht funktioniert hat), nur keine Verfallszeit überhaupt. Nun, das erklärt, warum es nicht viele Fragen gab.

Vielen Dank.

+1

HTTP hat Ablaufdaten zu senden. Überprüfen Sie die RFCs und die Implementierung, wenn sie die richtigen Daten sendet. (Muss in der Vergangenheit sein.) – schlingel

Antwort

18

Stellt sich heraus, es ist ganz einfach, statt Ablauf der vorbei: 0 (was nicht funktioniert hat), nur don Verfall überhaupt nicht. Nun, das erklärt, warum es nicht viele Fragen gab.

Statt Ablauf wie so mit den Flaggen vorbei:

$.cookie(key, value, { expiry: 0, domain: '', path: '' }); 

Sie auslassen nur den Ablauf Wert:

$.cookie(key, value, { domain: '', path: '' }); 

Und es funktioniert. Es ist so einfach, dass es mich verwirrt hat.

Aber trotzdem danke!

2

Es ist möglich in der RFC 2965 specification. Das wäre möglich, wenn Sie in Ihrem Cookie-Handling-Code und die Eigenschaft "Discard" setzen, wenn der Browser dies unterstützt.

Das sagte: jQuery Cookie unterstützt die Discard-Eigenschaft nicht. Sie hätte den jQuery-Cookie Code zu erweitern, wie so (es ist um die Linie 57 in der Originaldatei):

 return (document.cookie = [ 
      config.raw ? key : encodeURIComponent(key), 
      '=', 
      config.raw ? value : encodeURIComponent(value), 
      options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE 
      options.path ? '; path=' + options.path : '', 
      options.domain ? '; domain=' + options.domain : '', 
          options.discard ? '; Discard=' + options.discard : '', 
      options.secure ? '; secure' : '' 
     ].join('')); 
0

, wenn Sie ein Standard-Setup wie diese verwenden

$.cookie.defaults = { path: '/', expires: 365 }; 

dann müssen Sie das folgende Attribut für jedes Cookie-Wert verwenden

$.cookie(key, value, { expires: null });