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'interfaceCookieChange()
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'interfaceCookieChange()
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éthodeaddListener()
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'interfaceCookieChange()
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éthoderemoveListener()
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--;}}}};}
Dernière mise à jour le .