In jQuery esistono varie soluzioni per leggere e scrivere i cookie. In questo articolo vedremo come implementare una nostra soluzione per svolgere questo compito specifico.
Possiamo implementare la seguente funzione di utility:
/**
* Legge o scrive un cookie
*
* @param string name Il nome del cookie
* @param mixed value (null per cancellare il cookie o undefined per leggerne il valore)
* @param object options (domain, expire (in giorni))
* @return mixed value o true
*
*/
(function($) {
$.cookie = function(name, value, options) {
if (typeof value === 'undefined') {
var n, v, cookies = document.cookie.split(';');
for (var i = 0; i < cookies.length; i++) {
n = $.trim(cookies[i].substr(0, cookies[i].indexOf('=')));
v = cookies[i].substr(cookies[i].indexOf('=') + 1);
if (n === name) {
return unescape(v);
}
}
} else {
options = options || {};
if (!value) {
value = '';
options.expires = -365;
} else {
value = escape(value);
}
if (options.expires) {
var d = new Date();
d.setDate(d.getDate() + options.expires);
value += '; expires=' + d.toUTCString();
}
if (options.domain) {
value += '; domain=' + options.domain;
}
if (options.path) {
value += '; path=' + options.path;
}
document.cookie = name + '=' + value;
}
};
})(jQuery);
La funzione accetta tre parametri:
name
– Il nome del cookie.value
– Il valore del cookie.options
– Un oggetto letterale che contiene due opzioni:domain
– Il dominio di base del cookie.expires
– Il tempo di scadenza del cookie (in giorni)
Per creare un cookie useremo il seguente codice:
$.cookie('test', 'Test', {expires: 2});
Il cookie ha il name
impostato su test
e il value
impostato su Test
ed ha una scadenza di due giorni. Per leggerne il valore useremo invece:
var cookieValue = $.cookie('test');
console.log(cookieValue); // 'Test'
Per cancellare il cookie useremo il valore null
come secondo parametro (value
):
$.cookie('test', null);