Как узнать, есть ли там cookie? - PullRequest
4 голосов
/ 30 ноября 2010

Так что я делаю простую функцию JS, как

function writeCookie() 
{ 

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

document.cookie=the_cookie 

} 

как убедиться, что установлен users_resolution?

Ответы [ 4 ]

4 голосов
/ 30 ноября 2010

Вы можете написать такую ​​функцию:

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

Затем, после того, как вы установили cookie, вы можете вызвать getCookie() и проверить его возвращаемое значение, если оно равно пустой строке, или"", то есть false, тогда cookie не существует.В противном случае вы получите правильное значение cookie.

Вышеуказанный абзац в коде:

var cookie = getCookie("users_resolution");
if (!cookie) {
   // cookie doesn't exist
} else {
  // cookie exists
}
3 голосов
/ 30 ноября 2010

Если вы просто выполните

var cookies = document.cookie;

, тогда строка cookies будет содержать разделенный точкой с запятой список пар имя-значение cookie.Вы можете разбить строку на ";" и просмотреть результаты, проверив наличие имени файла cookie.

1 голос
/ 30 ноября 2010

Я знаю, что вы не пометили это как jQuery, но я создал плагин jQuery для обработки файлов cookie , и это фрагмент, который считывает значение файла 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;
0 голосов
/ 30 ноября 2010

Возможно, вы захотите использовать indexOf, чтобы проверить, существует он или нет:

if(document.cookie.indexOf('users_resolution=') > 0){
  // cookie was set
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...