Foros del Web » Programando para Internet » Javascript »

Crear, Leer Cookies

Estas en el tema de Crear, Leer Cookies en el foro de Javascript en Foros del Web. Hola, estoy teniendo problemas con la creacion de una cookie. Basicamente lo que hace es guardar la informacion de 3 textbox (por ahora)y colocarla en ...
  #1 (permalink)  
Antiguo 23/04/2010, 08:55
 
Fecha de Ingreso: abril-2009
Mensajes: 43
Antigüedad: 15 años
Puntos: 1
Crear, Leer Cookies

Hola, estoy teniendo problemas con la creacion de una cookie.
Basicamente lo que hace es guardar la informacion de 3 textbox (por ahora)y colocarla en un div.
El tema es que cuando tengo abierta la ventana del ie7 (el desarrollo del sistema solo sera para explorer, no firefox ni otro explorador) cuando agrego los elementos que estan en el textbox al div lo hace bien, si actualizo la pagina los mantiene, pero al cerrar y abrir la ventana pierdo esos valores.
Cuando voy a fijarme en los temporale donde guarda las cookie no me aparece. Probe con unas funciones para crear y leer cookies y si esta funcionando. Pongo el codigo para ver que estoy haciendo mal.

Código:
 <style type="text/css">
.flotante 
{
   background: beige;
   border: solid 1px black;
   padding: 5px;
   position:fixed;
   width:995px;
   height:50px;
   top:85%;
}
 </style>
 
 <script type="text/javascript">
	function Validate()
	{
		//Obtenemos los valores de los Textbox
		var txt1 = document.getElementById('txt1').value; 
		var txt2 = document.getElementById('txt2').value;
		var txt3 = document.getElementById('txt3').value;		
		
		//Creamos la Cookie
		createCookie();		
	}
	
	function createCookie()
	{
		var Cookie = document.cookie;
		if(Cookie !="")
		{
			//Si la cookie existe se llama a la funcion deleteCookie y se la elimina
			deleteCookie(Cookie);
		}		
		
		//Definimos un array en onde se almacenaran los valores de los Textboxs
		 var ArrayValores = new Array() ;
		
		 ArrayValores[0] = document.getElementById('txt1').value; 
		 ArrayValores[1] = document.getElementById('txt2').value;
		 ArrayValores[2] = document.getElementById('txt3').value;
		
		//Establecemos la fecha de expiracion
		FechaLimiteCookie = new Date;
		FechaLimiteCookie.setMonth(FechaLimiteCookie.getMonth() + 3);
		
		var ElementosCookie=ArrayValores;		

		//Agrega los elementos a la Cookie
		ElementosCookie=  escape(ElementosCookie);
		document.cookie = ElementosCookie;
		//leo Cookie
		readCookie();	
		
	}
	
	function deleteCookie(Cookie)
	{	
		FechaBorraCookie = new Date;
		//Establece una fecha anterior para que se borre la cookie actual
		FechaBorraCookie.setMonth(FechaBorraCookie.getMonth() - 1);
		  document.cookie = Cookie += "=; expires=" + FechaBorraCookie.toGMTString();
	} 
	
	function readCookie()
	{	
		//Verificamos si existe la cookie, en caso de no existir se llama a la funcion CreateCookie()

		if(document.cookie)
		{
			//Obtengo valor de cookie
			var cookie = document.cookie;
			//Se decodifica la cookie
			var fixed_cookie = unescape(cookie);
			//Separamos los elementos de la cookie
			var ElementosCookie= fixed_cookie.split(',');
			alert(ElementosCookie);
			//Obtenemos Elementos del Div, en caso de encontrar se llama a la funcion RefreshDIV 
			//para eliminar el contenido y actualizarlo con los nuevos valores de la cookie
			var node = document.getElementById('divFlotante');
			if(node.hasChildNodes())
				RefreshDIV(node);
			
			//Creamos una lista con los elementos de la Cookie
			var CrearUL  = document.createElement('ul');
			var CrearLI;
			var ElementoNodo;
			//Recorre los elementos de la cookie	
			for(var i=0; i<ElementosCookie.length; i++) 
			{
				CrearLI = document.createElement('li');
				ElementoNodo = document.createTextNode(ElementosCookie[i]);
				
				//Preguntamos si el elemento en esa posición es distinto de vacio, en el caso de ser vacio lo ignoramos y no lo agregamos
				if(ElementoNodo.nodeValue != "")
				{
					CrearLI.appendChild(document.createTextNode(ElementosCookie[i]));
					CrearUL.appendChild(CrearLI);
				}		
			}
				
			//Obtenemos el Div que deseamos usar para luego, poder escribir el contenido de la cookie
			document.getElementById('divFlotante').appendChild(CrearUL);
		}
		else
		{
			alert("no encontre cookie");
			createCookie();
		}
		
		function RefreshDIV(node)
		{
			//Se recorre los elementos agregados al div para borrarlos, cuando no se encuentren mas valores, sale del bucle
			while(node.firstChild) 
			{
				node.removeChild(node.firstChild);
			}
		}	
	}
</script>
<body onload="javascript:readCookie()">
<div id='texto' height="100%" width="100px" > 
	<input type="text" id="txt1" value="" /> <input type="button" id="btnAdd" value="add" onclick="javascript:Validate()" /><br>
	<input type="text" id="txt2" value="" /> 
		<input type="text" id="txt3" value="" /> 
	<div id='ElementosCookie' height="25px" width="480px">
	
	</div>
</body>	
</div>
<div class="flotante" id="divFlotante">texto flotante</div>
  #2 (permalink)  
Antiguo 23/04/2010, 13:02
 
Fecha de Ingreso: abril-2009
Mensajes: 43
Antigüedad: 15 años
Puntos: 1
Respuesta: Crear, Leer Cookies

ya encontre el error, era que ojn le pasaba la fecha de expiracion. adjunto el codigo:

Código:
 <style type="text/css">
.flotante 
{
   background: beige;
   border: solid 1px black;
   padding: 5px;
   position:fixed;
   width:995px;
   height:50px;
   top:85%;
}
 </style>
 
 <script type="text/javascript">
	function createCookie()
	{
		var Cookie = document.cookie;	
		
		if(Cookie !="")
		{
			//Si la cookie existe se llama a la funcion deleteCookie y se la elimina
			deleteCookie(Cookie);
		}		
		
		//Definimos un array en donde se almacenaran los valores de los Textboxs
		var ArrayValores = new Array();
		
		//Obtenemos los valores de los Textbox y los asignamos a una posicion en el array
   		 ArrayValores[0] = document.getElementById('txt1').value; 
		 ArrayValores[1] = document.getElementById('txt2').value;
		 ArrayValores[2] = document.getElementById('txt3').value;
		 
		//Establecemos la fecha de expiracion
		FechaVencimientoCookie = new Date;
		FechaVencimientoCookie.setMonth(FechaVencimientoCookie.getMonth() + 3);

		//Agrega los elementos y fecha de vencimiento a la variable 
		var ElementosCookie = escape(ArrayValores)+ ';expires = ' + FechaVencimientoCookie.toGMTString()+"; path= /";

		//Agrego elementos a la cookie
		document.cookie = ElementosCookie;
		//leo Cookie
		readCookie();	
		
	}
	
	function deleteCookie(Cookie)
	{	
		FechaBorraCookie = new Date;
		//Establece una fecha anterior para que se borre la cookie actual
		FechaBorraCookie.setMonth(FechaBorraCookie.getMonth() - 1);
		document.cookie = Cookie + "=; expires=" + FechaBorraCookie.toGMTString();
	} 
	
	function readCookie()
	{	
		//Obtengo valor de cookie
		var NombreCookie = document.cookie;
	
		//Verificamos si existe la cookie, en caso de no existir se llama a la funcion CreateCookie()
		if(NombreCookie != "")
		{
			//var cookie = document.cookie;
			//Se decodifica la cookie
			var fixed_cookie = unescape(NombreCookie);
			//Separamos los elementos de la cookie
			var ElementosCookie = fixed_cookie.split(',');
			//Obtenemos Elementos del Div, en caso de encontrar se llama a la funcion RefreshDIV 
			//para eliminar el contenido y actualizarlo con los nuevos valores de la cookie
			var node = document.getElementById('divFlotante');
			if(node.hasChildNodes())
				RefreshDIV(node);
			
			//Creamos una lista con los elementos de la Cookie
			var CrearUL  = document.createElement('ul');
			var CrearLI;
			var ElementoNodo;
			//Recorre los elementos de la cookie	
			for(var i=0; i<ElementosCookie.length; i++) 
			{
				CrearLI = document.createElement('li');
				ElementoNodo = document.createTextNode(ElementosCookie[i]);
				
				//Preguntamos si el elemento en esa posición es distinto de vacio, en el caso de ser vacio lo ignoramos y no lo agregamos
				if(ElementoNodo.nodeValue != "")
				{
					CrearLI.appendChild(document.createTextNode(ElementosCookie[i]));
					CrearUL.appendChild(CrearLI);
				}		
			}
				
			//Obtenemos el Div que deseamos usar para luego, poder escribir el contenido de la cookie

			document.getElementById('divFlotante').appendChild(CrearUL);	
		}
		else
		{
			createCookie();
		}
		
		function RefreshDIV(node)
		{
			//Se recorre los elementos agregados al div para borrarlos, cuando no se encuentren mas valores, sale del bucle
			while(node.firstChild) 
			{
				node.removeChild(node.firstChild);
			}
		}	
	}
</script>
<body onload="javascript:readCookie()">
<div id='texto' height="100%" width="100px" > 
	<input type="text" id="txt1" value="" /> <input type="button" id="btnAdd" value="add" onclick="javascript:createCookie()" /><br>
	<input type="text" id="txt2" value="" /> 
		<input type="text" id="txt3" value="" /> 
	<div id='ElementosCookie' height="25px" width="480px">
	
	</div>
</body>	
</div>
<div class="flotante" id="divFlotante">texto flotante</div>
  #3 (permalink)  
Antiguo 23/04/2010, 17:36
 
Fecha de Ingreso: mayo-2009
Mensajes: 20
Antigüedad: 15 años
Puntos: 0
Pregunta Respuesta: Crear, Leer Cookies

wondercloud,
estoy intentando montar un sensillo menu, con un efecto jquery y ademas agregarle una cookie para que el slide del menu mantenga su posición.

Investigo tu codigo para inspirarme, pero no logro hacerlo funcionar, alguna ayuda?

Redacte un nuevo tema: http://www.forosdelweb.com/f13/agregar-cookie-menu-800437/

Gracias!

Etiquetas: cookies
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:56.