Créer ou modifier un cookie avec JavaScript

Concept et utilisation

La fonction cookieSet() permet de créer un cookie ou de modifier la valeur d'un cookie existant.

Le nom, la valeur, et les attributs du cookie peuvent être spécifiés.

Fonction

cookieSet()

Créée un cookie.

Syntaxe
cookieSet(nom, valeur, attributs);
Paramètres
nom(String)

Le paramètre nom de la fonction cookieSet() définit le nom du cookie à créer ou modifier.

valeur(String ou Number)

Le paramètre valeur de la fonction cookieSet() définit la valeur du cookie à créer ou modifier.
La valeur sera encodée avec la fonction encodeURIComponent().

attributs(Object)

Le paramètre attributs de la fonction cookieSet() définit les attributs optionnels à appliquer au cookie à créer ou modifier.

Propriétés
domain(String)

La propriété domain du paramètre attributs définit le(s) domaine(s) pour lequel le cookie sera valable.

path(String)

La propriété path du paramètre attributs définit le chemin des pages pour pour lequel le cookie sera valable
Par default, la valeur de cet attribut est /.

expiresIn(Number)

La propriété expiresIn du paramètre attributs définit le délai d'expiration du cookie, en millisecondes.
Si la valeur est omise ou vaut 0, le cookie durera le temps de la session du navigateur.

days(Number)

La propriété days du paramètre attributs définit le délai en jours d'expiration du cookie.
Si la valeur est omise ou vaut 0, le cookie durera le temps de la session du navigateur.

Autres propriétés

Une liste exhaustive des attributs de cookie est disponible ici.

Exemples de création de cookie

var nom = 'nom_du_cookie';
var valeur = 'Valeur';

cookieSet(nom, valeur);
var nom = 'nom_du_cookie';
var valeur = 'Valeur';
var attributs = {
  expiresIn: 365*24*60*60*1000
};

cookieSet(nom, valeur, attributs);

Le code précédent est equivalent au code suivant :

var nom = 'nom_du_cookie';
var valeur = 'Valeur';
var attributs = {
  days: 365
};

cookieSet(nom, valeur, attributs);

Code source de la fonction

function cookieSet(name, value, o) {
  o = o || {};
  var v = name + "=" + encodeURIComponent(value) + ";path=" + (o.path || '/');
  for (var k in o) {
    if (!/^(name|value|path)$/i.test(k)) {
      if (/^(days|expiresIn)$/i.test(k)) {
        var d = new Date();
        d.setTime(d.getTime() + (k === 'expiresIn' ? o[k] : o[k]*24*60*60*1000));
        v += ";expires=" + d.toUTCString();
      } else if (/^(secure|httponly)$/i.test(k)) {
        v += (typeof o[k] === 'boolean' && o[k]) ? ';' + k : '';
      } else {
        v += ";" + k + "=" + o[k];
      }
    }
  }
  document.cookie = v;
}
^