jQuery: creare una funzione di utility per gestire i cookie

jQuery: creare una funzione di utility per gestire i cookie

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:

  1. name – Il nome del cookie.
  2. value – Il valore del cookie.
  3. options – Un oggetto letterale che contiene due opzioni:
    1. domain – Il dominio di base del cookie.
    2. 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);

Torna su