Puis-je modifier ou ajouter des cookies de JavaScript?

Exactement quelles sont les restrictions pour manipuler les cookies du navigateur à partir de javascript? Puis-je vérifier si les cookies sont activés par exemple?

Oui! Lisez cet excellent article sur l'utilisation de cookies avec 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 pour vérifier si elles sont activées. J'aime la réponse de jldupont.

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

Vous pouvez utiliser navigator.cookieEnabled mais je ne suis pas sûr de savoir si cela est pris en charge par tous les navigateurs.

Pour plus d'informations sur les cookies, vérifiez ceci

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 drapeau 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 les cookies persistants sont bloqués. Donc, vous ne saurez pas vraiment si un cookie-set réussira à moins que vous ne le poursuivez et essayez, en définissant un document.cookie fictif, puis en lisant document.cookie pour voir si cela a pris.

Dans de nombreux navigateurs, un cookie persistant sera dégradé dans un cookie de session lorsque les cookies persistants sont désactivés. Mais pas IE, qui va tout simplement le bloquer. Vous pouvez essayer de le détecter en configurant un cookie persistant et un cookie de session sur document.cookie et en voyant si survient.

Il existe un excellent article sur quirksmode sur la manipulation de cookies via JavaScript: http://www.quirksmode.org/js/cookies.html

Le code des cookies JavaScript de W3Schools comporte un bug. Dans la fonction setCookie cette ligne:

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

JavaScript Date Propriétés de l'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 cookie à TechPatterns.com JavaScript Cookie Script Obtenez des cookies, définissez des cookies, supprimez les fonctions de cookie (mieux encore). Le résultat n ° 1 dans Google n'est pas toujours le meilleur.

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