martes, 19 de abril de 2011

Manipular cookies en javascript

Aqui dejo unas buenos metodos para manipular cookies en javascript que son un poco tediosas y esto es algo que funciona a la perfeccion:

Clase cookie en javascript para manipularlas
var Cookie = {
set: function(name,value,seconds){
if(seconds){
d = new Date();
d.setTime(d.getTime() + (seconds * 1000));
expiry = '; expires=' + d.toGMTString();
}else
expiry = '';
document.cookie = name + "=" + value + expiry + "; path=/";
},
get: function(name){
nameEQ = name + "=";
ca = document.cookie.split(';');
for(i = 0; i < ca.length; i++){ c = ca[i]; while(c.charAt(0) == ' ') c = c.substring(1,c.length); if(c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); } return null }, unset: function(name){ Cookie.set(name,'',-1); } }




Posibles usos de la clase

Cookie.set('nombre','valor', 86400);
Cookie.unset('nombre');



Otra solucion para manipular cookies pero esta vez mediante una funcion javascript

function getCookie( name ) {
var start = document.cookie.indexOf( name + "=" );
var len = start + name.length + 1;
if ( ( !start ) && ( name != document.cookie.substring( 0, name.length ) ) ) {
return null;
}
if ( start == -1 ) return null;
var end = document.cookie.indexOf( ';', len );
if ( end == -1 ) end = document.cookie.length;
return unescape( document.cookie.substring( len, end ) );
}

function setCookie( name, value, expires, path, domain, secure ) {
var today = new Date();
today.setTime( today.getTime() );
if ( expires ) {
expires = expires * 1000 * 60 * 60 * 24;
}
var expires_date = new Date( today.getTime() + (expires) );
document.cookie = name+'='+escape( value ) +
( ( expires ) ? ';expires='+expires_date.toGMTString() : '' ) + //expires.toGMTString()
( ( path ) ? ';path=' + path : '' ) +
( ( domain ) ? ';domain=' + domain : '' ) +
( ( secure ) ? ';secure' : '' );
}

function deleteCookie( name, path, domain ) {
if ( getCookie( name ) ) document.cookie = name + '=' +
( ( path ) ? ';path=' + path : '') +
( ( domain ) ? ';domain=' + domain : '' ) +
';expires=Thu, 01-Jan-1970 00:00:01 GMT';
}



Y ahora como se usa esta funcion para manipular cookies


// Párametros para setCookie
// nombre, valor, expira, camino, dominio, seguro
setCookie( 'test', 'mi valor', '', '/', '', '' );
if ( getCookie( 'test' ) ) alert( getCookie('test'));

// Párametros para deleteCookie
// nombre, camino, dominio
// Asegúrese de usar los mismos parámetros en setCookie y deleteCookie.
deleteCookie('test', '/', '');
( getCookie( 'test' ) ) ? alert( getCookie('test')) :
alert( 'No existe');