Работа с куки в JavaScript и JQuery

Рейтинг: 0Ответов: 1Опубликовано: 18.03.2011

Основная задача: узнать, первый раз пользователь на сайте или нет. Прочитал несколько мануалов по javascript cookie, примеры смотрел, но везде используются всякие замудрёные конструкции, пришёл к выводу, что в php всё гораздо проще. Итак, я хочу узнать сколько раз был юзер на сайте:

<script type="text/javascript" language="javascript">
    var iscook = navigator.cookieEnabled;
    if (iscook == true) {
        iscook = "включены";
    } else {
        iscook = "выключены";
    }
    num = 0;
    var vis = document.cookie = "visit="+num;
    if(vis == "visit=0") {
        vis = "visit="+num++;
    }
    alert("Куки "+iscook+". Вы были тут "+vis+" раз");
</script>

Что я здесь сделал не так? И как сделать лучше? И ещё вопрос, актуально ли использование объекта (я так полагаю, что это объект) Navigator и чем он отличается от Document?

Пробы с плагином jQuery ни к чему не привели, почему NULL?

<script src="js/jquery-1.5.1.min.js" type="text/javascript" language="javascript">
</script>
<script src="js/jquery.cookie.js" type="text/javascript"></script>
<script>
    num = 0;
    $.cookie("visit",num);
    if($.cookie("visit") == 0) {
        alert("Вижу вы тут первый раз");
        $.cookie("visit", num++);
    }
    else {
        alert("Вижу вы тут уже " + $.cookie("visit") + " раз!");
    }
</script>

??

Ответы

▲ 5

Могу дать готовый код для работы с куки, писал для себя:

var CookieManager = {
    set: function (name, value, days) {
         var expires = "";
          if (days) {
              var d = new Date();
              d.setTime(d.getTime() + (days * 24 * 60 * 60 * 1000));
              expires = "; expires=" + d.toGMTString();
          }
          document.cookie = name + "=" + value + expires + "; path=/";
          return this.get(name);
    },
    get: function (name) {
          name += "=";
          var b = document.cookie.split(';'), c;
          for (var i = 0; i < b.length; i++) {
              c = b[i].replace(/(^\s+)|(\s+$)/g, "");
              while (c.charAt(0) == ' ') 
                   c = c.substring(1, c.length);
              if (c.indexOf(name) == 0) 
                   return c.substring(name.length, c.length);
          }
          return null;
    },
    remove: function (name) {
          this.set(name, "", -1);
    }
};

Пример использования:

CookieManager.set('name', 'value'); // параметр days можно не указывать
alert(CookieManager.get('name'));
CookieManager.remove('name');

В Вашем случае:

var visits = CookieManager.set('visits', parseInt(CookieManager.get('visits') || 0) + 1);
alert("Количество посещений: "+ visits);