entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

crear y leer Cookies con javascript

Hola!
Tengo un pequeño sitio en neocities.org (sólo html) y quisiera agregarle un div que aparezca una sola vez al día a cada usuario.
Se me ocurre que puedo hacer eso con una cookie.
El sitio no requiere suscripción.
Pensé que podría generar una cookie llamada mensaje con valor 0 y que cuando el usuario cierre el mensaje, el valor pase a 1.

Ahora estoy acá:

<script>
document.write("<h2>Probando Cookie</h2>");
document.cookie = 'mensaje=0;expire=0';

coo=document.cookie.split("=")[1];
    if (coo == 0){
   document.write ("mostrar div");
    }else{

    document.write ("ocultar div y mostrar valor " + coo);

    }
    </script> 

Hay 2 cosas que no puedo resolver:
1- Leer sólo el valor de la cookie con javascript
2- Modificar el valor de esa cookie en particular.

Dde ya muchas gracias!

Olvidé decirles el resultado:

Chrome responde:

Probando Cookie
ocultar div y mostrar valor undefined

Internet Explorer responde:

Probando Cookie
ocultar div y mostrar valor 0; _pk_id.3.4209

2 Respuestas

1voto

mrczrt Puntos6940

Hola, ok si lo que buscas es en una linea una cookie especifica puedes usar :

var micookie = (document.cookie.indexOf('nombre=') === -1 ? '' : ("; " + document.cookie).split('; nombre=')[1].split(';')[0]);

Lo hice en una sola linea, si la cookie no esta devuelve un string vacío en caso contrario lo que contenga, para que funcione remplaza nombre en los 2 lugares donde aparece por el nombre de tu cookie, es importante que respetes el espacio entre el el punto y coma y el nombre de tu cookie, saludos.

0voto

top21tk comentado

OK. Ahora funciona
Quedó así.

<fieldset style="border:Solid 1px #aaaaaa; width:70%; padding:10">
<legend>Te resulta útil?</legend>

<script>
var micookie = (document.cookie.indexOf('visita=') === -1 ? '' : ("; " + document.cookie).split('; visita=')[1].split(';')[0]);
if (micookie == 0){
   document.write ("<center>Hola. Esta es tu primera visita, bienvenido!</center>");
}else{
   document.write ("<center>Hey, visitaste este sitio " + micookie + " veces. Tal vez quieras colaborar. Pronto será posible!</center>");
}
micookie++;
document.cookie = "visita="+ micookie +"; expires='Sat, 18-Jan-2014 14:28:22'; ";
</script>
<br>
</fieldset>

Muchas Gracias!!

1voto

mrczrt Puntos6940

Hola que tal, puedes usar las funciones de ejemplo en w3schools : http://www.w3schools.com/js/js_cookies.asp

Esta el ejemplo A Function to Set a Cookie y también A Function to Get a Cookie totalmente funcionales, simples y compatibles con todos los navegaderos.

Saludos.

0voto

top21tk comentado

Gracias mrczrt,
Busqué antes de hacer la pregunta y encontré los archivos de w3sc, pero en ellos siempre usan funciones.
La idea era obtener el valor de una cookie sin utilizar funciones...
Pensando que sólo voy a utilizarlo una vez.

En realidad debo aprender a leer el valor de una cookie específica, en este caso el nombre es "mensaje".

Muchas gracias por tu ayuda. Si no consigo respuesta mejor, me quedaré con la guía de w3 que sugieres.

0voto

mrczrt comentado

Hola, ok si lo que buscas es en una linea una cookie especifica puedes usar :

var micookie = (document.cookie.indexOf('nombre=') === -1 ? '' : ("; " + document.cookie).split('; nombre=')[1].split(';')[0]);

Lo hice en una sola linea, si la cookie no esta devuelve un string vacío en caso contrario lo que contenga, para que funcione remplaza nombre en los 2 lugares donde aparece por el nombre de tu cookie, es importante que respetes el espacio entre el el punto y coma y el nombre de tu cookie, saludos.

0voto

top21tk comentado

Hola,

Logré solucionarlo con el último código que me pasaste.

Por favor, publicalo en una repuesta nueva para seleccionarla como mejor respuesta.
Muchas Gracias!

0voto

mrczrt comentado

Ok ya esta publicado, saludos!.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta