2010-11-30 14 views
4

donc je fais fonction JS simple commeComment savoir si un cookie est déjà là?

function writeCookie() 
{ 

var the_cookie = "users_resolution="+ screen.width +"x"+ screen.height; 

document.cookie=the_cookie 

} 

comment tm assurez-vous que users_resolution est réglé?

+2

dans la page en cours ou les pages suivantes? – Vjy

+0

sur la page actuelle. mais les pages suivantes sont aussi un point d'intérêt. – Rella

Répondre

4

Vous pouvez écrire une fonction comme ceci:

function getCookie(cName) { 
    var cVal = document.cookie.match('(?:^|;) ?' + cName + '=([^;]*)(?:;|$)'); 
    if (!cVal) { 
     return ""; 
    } else { 
     return cVal[1]; 
    } 
    } 

Ensuite, une fois que vous avez défini le cookie, vous peut appeler getCookie() et tester sa valeur de retour, si elle est égale à une chaîne vide, ou "", qui est false, alors le cookie n'existe pas. Sinon, vous avez une valeur de cookie valide.

Le paragraphe code ci-dessus:

var cookie = getCookie("users_resolution"); 
if (!cookie) { 
    // cookie doesn't exist 
} else { 
    // cookie exists 
} 
3

Si vous venez

var cookies = document.cookie; 

alors la chaîne cookies contiendra une liste séparée par des points-virgules de paires nom-valeur cookies. Vous pouvez diviser la chaîne sur ";" et parcourir les résultats en vérifiant la présence de votre nom de cookie.

0

Vous pouvez utiliser indexOf pour vérifier si elle existe ou non:

if(document.cookie.indexOf('users_resolution=') > 0){ 
    // cookie was set 
} 
+3

Que faire s'il y a un cookie avec le nom 'admin_users_resolution'? – BalusC

+0

Cela ne fonctionnera pas si cookie commence par 'users_resolution'. Comme 'indexOf' obtiendra '0' si cookie commence avec la même chaîne que vous recherchez. Alors, s'il vous plaît mettre à jour votre réponse. Merci. –

1

Je sais que vous ne l'avez pas appeler ceci comme jQuery, mais je fait un jQuery plugin to handle cookies, ce qui est l'extrait qui lit la valeur du cookie:

/** 
    * RegExp Breakdown: 
    * search from the beginning or last semicolon: (^|;) 
    * skip variable number of spaces (escape backslash in string): \\s* 
    * find the name of the cookie: name 
    * skip spaces around equals sign: \\s*=\\s* 
    * select all non-semicolon characters: ([^;]*) 
    * select next semicolon or end of string: (;|$) 
    */ 
    var regex = new RegExp('(^|;)\\s*'+name+'\\s*=\\s*([^;]*)(;|$)'); 
    var m = document.cookie.match(regex); 
    // if there was a match, match[2] is the value 
    // otherwise the cookie is null ?undefined? 
    val = m ? m[2] : null;