Détecter le changement de valeur d'un cookie avec JavaScript

Concept et utilisation

La fonction CookieChange() permet de détecter le changement de valeur d'un cookie.

Elle créée un détecteur de changement de valeur d'un cookie dont le nom est paramétrable, auquel un écouteur d'évènement peut être ajouté ou supprimé.

Constructeur

CookieChange()

Retourne un objet détecteur de changement de valeur d'un cookie.

Syntaxe
new CookieChange(nom_du_cookie);
Paramètre

Le paramètre nom_du_cookie de l'interface CookieChange() définit le nom du cookie pour lequel un détecteur de changement de valeur sera créé.

Méthodes de l'instance
detecteur.addListener()

La méthode addListener() de l'interface CookieChange() ajoute un écouteur au détecteur de changement de valeur de cookie.

Syntaxe
detecteur.addListener(ecouteur);
Paramètre
ecouteur(Function)

Le paramètre ecouteur de la méthode addListener() est un écouteur de changement de valeur qui sera ajouté au détecteur.
Il s'agit d'une fonction de rappel, dont les arguments sont :

  • nom_du_cookie : nom du cookie dont un changement de valeur a été détecté.
  • nouvelle_valeur : nouvelle valeur du cookie dont un changement de valeur a été détecté.
  • ancienne_valeur : ancienne valeur du cookie dont un changement de valeur a été détecté.
detecteur.removeListener()

La méthode removeListener() de l'interface CookieChange() supprime un écouteur du détecteur de changement de valeur de cookie.

Syntaxe
detecteur.removeListener(ecouteur);
Paramètre
ecouteur

Le paramètre ecouteur de la méthode removeListener() est un écouteur de changement de valeur qui sera supprimé du détecteur.

Exemple de détection du changement de valeur d'un cookie

var nom_du_cookie = 'mon_cookie';
var detecteur = new CookieChange(nom_du_cookie);

var ecouteur = function(nom_du_cookie, nouvelle_valeur, ancienne_valeur) {

  console.log(nom_du_cookie, nouvelle_valeur, ancienne_valeur);

  myCookie.removeListener(ecouteur); // supprime l'écouteur
}

detecteur.addListener(ecouteur);// ajoute l'écouteur

Code source de la fonction

function CookieChange(n){var g=function(y){var a=y+"=",b=document.cookie.split(';'),
c,i,j=b.length;for(i=0;i<j;i++){c=b[i];while(c.charAt(0)===' '){c=c.substring(1);}
if(c.indexOf(a)===0){return c.substring(a.length,c.length);}}return'';},a=[],
t=null,s=function(){clearTimeout(t);t=setTimeout(function(){if(a.length>0){
for(var i=0,j=a.length;i<j;i++){var r=a[i],v=g(r[0]);if(v!==r[2]){
var o=(function(a){return a;})(r[2]);+'';r[2]=v;r[1](r[0],v,o);}}s();}},150);
};return{addListener:function(f){a.push([n,f,g(n)]);s();},
removeListener:function(f){for(var i=0,j=a.length;i<j;i++){
if(a[i][0]===n&&a[i][1]===f){a.splice(i,1);i--;j--;}}}};}
^