2009-11-10 15 views

Respuesta

7

se escribe una galleta y tratar de leer de nuevo: de esta manera, usted sabrá si están activadas las cookies.

40

Sí! Read this excellent article about using cookies with JavaScript

He aquí un ejemplo de código extractada.

function createCookie(name,value,days) { 
    if (days) { 
     var date = new Date(); 
     date.setTime(date.getTime()+(days*24*60*60*1000)); 
     var expires = "; expires="+date.toGMTString(); 
    } 
    else var expires = ""; 
    document.cookie = name+"="+value+expires+"; path=/"; 
} 

function readCookie(name) { 
    var nameEQ = name + "="; 
    var ca = document.cookie.split(';'); 
    for(var i=0;i < ca.length;i++) { 
     var 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; 
} 

function eraseCookie(name) { 
    createCookie(name,"",-1); 
} 

Y en cuanto a las pruebas si están habilitadas. Me gusta la respuesta de jldupont.

+0

Buen artículo con guiones de trabajo. – Bratch

+0

¡Gracias! Muy buen ejemplo. –

4

puede utilizar navigator.cookieEnabled pero no estoy seguro de si es compatible con todos los navegadores.

Para obtener más información acerca de las cookies, comprobar this

1

¿Puedo comprobar si las cookies están habilitadas por ejemplo?

Sí, pero no tan fácilmente como crees. navigator.cookieEnabled es una bandera muy general que no cubre exactamente bajo qué circunstancias puede establecer una cookie.

Por ejemplo, es posible que se permitan las cookies de sesión pero que se bloqueen las persistentes. Por lo tanto, no sabrá realmente si un conjunto de cookies tendrá éxito a menos que lo pruebe e ingrese un código ficticio document.cookie y luego lea document.cookie para ver si fue necesario.

En muchos navegadores una cookie persistente se reducirá a una cookie de sesión cuando cookies persistentes están desactivadas. Pero no IE, que simplemente lo bloqueará. Puede tratar de detectarlo estableciendo una cookie persistente y una cookie de sesión en document.cookie y ver cuál de ellas sobrevivirá.

0

El código JavaScript Cookies W3Schools tiene un error en ella. En el setCookie función de esta línea:

exdate.setDate(exdate.getDate()+expiredays); 

JavaScript Object Propiedades Fecha:

getDate() - Returns the day of the month (from 1-31) 
... 
getTime() - Returns the number of milliseconds since midnight Jan 1, 1970 
... 

getDate() plus the number of days is not going to work. I think it should be something like this: 

expire = expiredays * 1000 * 60 * 60 * 24; // convert to milliseconds 
var exdate = new Date(today.getTime() + (expire)); 

Las bibliotecas de galletas en TechPatterns.com Javascript Cookie Script Get Cookie, Set Cookie, Delete Cookie Functions trabajo mejor (# 1 en los resultados de Google no siempre es la mejor).

He probado el código de dos páginas en Internet Explorer 8 y la primera causa de mi galleta tiene una fecha de expiración del 01/01/2038 1:00. El código del segundo ejemplo establece la fecha de caducidad de la cookie en exactamente 1 día desde el momento en que la probé, tal como se esperaba.

+0

Sin embargo, estas bibliotecas parecen tener otro problema (si la cookie contiene '='): http://thinkclay.com/technology/add-edit-delete-cookies-with-javascript#comment-712789590 – despot

Cuestiones relacionadas