2009-11-10 2 views

Répondre

7

Vous écrivez un cookie et essayez de relire: de cette façon, vous saurez si les cookies sont activés.

40

Oui! Read this excellent article about using cookies with JavaScript

Voici un exemple de code extrait.

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); 
} 

Et comme pour tester si elles sont activées. J'aime la réponse de jldupont.

+0

Bon article avec des scripts de travail. – Bratch

+0

Merci! Très bel exemple. –

4

vous pouvez utiliser navigator.cookieEnabled mais je ne suis pas sûr si elle est supportée par tous les navigateurs.

Pour plus d'informations sur les cookies, consultez this

1

Puis-je vérifier si les cookies sont activés par exemple?

Oui, mais pas aussi facilement que vous le pensez. navigator.cookieEnabled est un indicateur très général qui ne couvre pas exactement dans quelles circonstances vous pouvez définir un cookie. Par exemple, il est possible que les cookies de session soient autorisés mais que les cookies persistants soient bloqués. Donc, vous ne saurez pas vraiment si un cookie-set va réussir à moins que vous n'alliez de l'avant et ne l'essayez, en mettant un document.cookie factice, puis en lisant document.cookie pour voir si cela a pris.

Dans de nombreux navigateurs, un cookie persistant sera rétrogradé en un cookie de session lorsque les cookies persistants sont désactivés. Mais pas IE, qui va simplement le bloquer. Vous pouvez essayer de détecter cela en définissant à la fois un cookie de persistance et un cookie de session sur document.cookie et de voir lequel survit le cas échéant.

0

Le code W3Schools JavaScript Cookies comporte un bogue. Dans la fonction setCookie cette ligne:

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

JavaScript Date de Propriétés Objet:

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)); 

Les bibliothèques de biscuits à TechPatterns.com Javascript Cookie Script Get Cookie, Set Cookie, Delete Cookie Functions fonctionnent mieux (# 1 dans les résultats Google ne sont pas toujours le meilleur).

J'ai testé le code des deux pages dans IE8 et le premier a fait que mon cookie a une date d'expiration du 1/1/2038 1:00 AM. Le code du second exemple définit la date d'expiration de mon cookie à exactement 1 jour à partir du moment où je l'ai testé, comme prévu.

+0

Ces bibliothèques semblent cependant avoir un autre problème (si le cookie contient '='): http://thinkclay.com/technology/add-edit-delete-cookies-with-javascript#comment-712789590 – despot

Questions connexes