Javascript: lenguaje interactivo para dinamizar la web.
Y ahora tambien aprende a programar en C++ con Aprende Web C++
y entérate de las novedades o deja un comentario.
última modificación: 13-07-2018.
Visitas este mes: 119
Visitas el mes pasado: 294
Mi agradecimiento a los siguientes sitios en los que me he basado para la elaboración de este manual.:
Por elegir aprende-web
Aprende-web está diseñado a partir de los lenguajes que aquí mismo se enseñan.
By Anyelguti
En la página anterior vimos cómo crear y guardar cookies. Las cookies son información que se guarda en el ordenador del usuario. Acceder al valor de una cookie en concreto no resulta tan fácil como guardarla, ya que no hay un método concreto para ello.
Para leer las cookies usaremos la instrucción: document.cookie:
misCookies = document.cookie
la variable misCookies
contendrá todas las cookies que tenga
guardadas el usuario en su ordenador para javascript y en el navegador que
esté usando. Estas se muestran en el siguiente formato:
nombre1=valor1;nombre2=valor2;nombre3=valor3 ... nombreN=valorN
Es decir, mediante esta instrucción obtenemos todas las cookies; cada cookie está separada de las demás por un punto y coma ( ; ), y de ella tenemos los datos del nombre, y el valor, separados por un signo igual. Sin embargo esta lista, tal como nos la dan nos sirve de poco, ya que lo que queremos saber normalmente, es el valor de una cookie determinada.
Una vez que tenemos la lista de las cookies, lo que debemos hacer para acceder al valor de una de ellas, es extraer ese valor de la lista. Lo normal es utilizar una función con las instrucciones necesarias para buscar el nombre de la cookie en la lista, y después poder extraer su valor asociado.
Veamos aquí una manera de extraer un valor concreto de la lista de cookies. No es la única forma de hacerlo, ya que lo que hay que hacer es extraer de la lista (la cual es una cadena de texto) el valor que nos interesa, para ello suelen utilizarse los métodos para cadenas de textos o expresiones regulares. Aquí utilizaré un método que me parece bastante sencillo:
para empezar accedemos a la lista de cookies:
misCookies = document.cookie
En misCookies
tenemos una cadena de texto con todas las cookies, las cuales
tienen el siguiente formato:
nombre1=valor1;nombre2=valor2; ...
El punto y coma separa cada cookie de la siguiente, por lo que lo utilizaremos para
transformar la cadena de texto en un array en la que cada elemento sea una cookie distinta;
para ello utilizaremos el método split(";")
. Al pasar como argumento
el punto y coma, las cookies quedan separadas.
listaCookies = misCookies.split(";")
Ahora listaCookies
es el array en el que tenemos todas las cookies. Cada elemento
es una cookie distinta, pero el formato en el que está escrita sigue siendo:
nombre=valor
Lo que nosotros conocemos de la cookie es el nombre, por lo que dentro del array debemos
buscar el elemento que contiene ese nombre. Para ello creamos un bucle que analice cada
elemento y nos diga mediante la funcion search()
si ese elemento contiene
el nombre de la cookie. El bucle es el siguiente:
for (i in listaCookies) {
busca = listaCookies[i].search("miNombre");
if (busca > -1) {micookie=lista[i]}
}
En el bucle, dentro de la lista de cookies listaCookies
buscamos
el que nos interesa miNombre
, el cual se lo pasamos como argumento
a la función search
. Como esta función devuelve -1 cuando no encuentra
el argumento buscado, y sabiendo que sólo puede haber una cookie con ese nombre,
cuando lo encuentre el valor dado será mayor de -1, así la cookie buscada la
guardamos en la variable micookie
.
Una vez que hemos encontrado la cookie buscada, debemos aislar su valor,
de modo que nos quedemos sólo con el valor, desechando en resto de la cadena.
la varible micookie
almacena la siguiente cadena de texto:
"miNombre=valor"
Donde miNombre
es el nombre de la cookie que buscamos, y
valor
es el valor que queremos obtener.
Por tanto el valor es lo que está escrito detrás del igual, por lo que
utilizaremos el método indexOf()
, que nos dirá la posición
del signo igual, y luego mediante el método substring()
obtenemos la cadena que va desde donde está el signo igual al final, la cual
es el valor de la cookie:
igual = micookie.indexOf("=");
valor = micookie.substring(igual+1);
La variable valor
contendrá el valor de la cookie que buscamos.
En el método substring()
el argumento pasado debe ser un número más del
obtenido en el metodo indexOf()
ya que si no se incluiría el signo
igual en la cadena de texto que lo contiene.
Todo este procedimiento explicado aquí podemos escribirlo en una función, a la cual se le pasa como argumento el nombre de la cookie buscada. La función será la siguiente:
function leerCookie(nombre) { var lista = document.cookie.split(";"); for (i in lista) { var busca = lista[i].search(nombre); if (busca > -1) {micookie=lista[i]} } var igual = micookie.indexOf("="); var valor = micookie.substring(igual+1); return valor; }
Con esta función podemos leer el valor de cualquier cookie, para ello debemos llamar a la función mediante:
leerCookie(nombreCookie)
Donde nombreCookie
es el nombre de la cookie que buscamos, y
el valor de la misma lo obtendremos en la variable valor
de la instrucción return
.
Para borrar una cookie concreta basta con reescribirla poniendole una fecha de caducidad anterior a la actual.
document.cookie = "miCookie=valor;expires=1 Mar 1990 00:00:00 GMT"
En este ejemplo borramos la cookie llamada miCookie
, el valor que le
damos es irrelevante, ya que se va a borrar; la fecha debe ser una fecha que ya
ha pasado, lo cual hace que la cookie se borre.
Si lo que pretendemos es borrar todas las cookies entonces tendremos que usar una función más complicada, ya que debemos buscar todas las cookies, y mediante un bucle buscar el nombre de cada una de ellas, para luego ir borrandolas. El proceso es parecido a cuando buscamos el valor de una cookie concreta; aunque puede haber varias maneras de hacerlo, nosotros lo haremos mediante la siguiente función:
function borrar() { var lista = document.cookie.split(";"); for (i in lista) { var igual = lista[i].indexOf("="); var nombre = lista[i].substring(0,igual); lista[i] = nombre+"="+""+";expires=1 Dec 2000 00:00:00 GMT" document.cookie = lista[i] } }
En la siguiente página veremos unos ejemplos en los que se aplican las cookies para cambiar el aspecto de la página.
Sugerencias:
aprendeweb@aprende-web.net. Envia un
Visita nuestro blog par saber en qué estamos trabajando: Aprende Web Blog
Más sobre anyelguti en http://anyelguti.16mb.com