Exactement quelles sont les restrictions pour la gestion des cookies de navigateur de javascript? Puis-je vérifier si les cookies sont activés par exemple?Puis-je modifier ou ajouter des cookies de JavaScript?
Répondre
Vous écrivez un cookie et essayez de relire: de cette façon, vous saurez si les cookies sont activés.
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.
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
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.
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.
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
Il y a un grand article sur quirksmode sur la manipulation des cookies via JavaScript: http://www.quirksmode.org/js/cookies.html
Bon article avec des scripts de travail. – Bratch
Merci! Très bel exemple. –