zorro76
@zorro76

Как правильно записать cookies?

На странице таковой сценарий: выполняется тур для нового пользователя, для действующего же тур не выполняется
тур jTour

$(function() {
    var myTour3 = jTour([
        {
            html: "your status",
            element: $('.status'),
            position: 'sw'
        },{
            html: "make the product launch",
            element: $('.btn-l'),
            position: 'sw'
        }
    ],{
        axis:'y',  // use only one axis prevent flickring on iOS devices
        onStop:function(){
        },
        onChange:function(current){
        },
        onFinish:function(current){
        },
        animationIn: 'slideDown',
        animationOut: 'hide',
        easing: 'easeInOutExpo', //requires the jquery.easing plugin
        scrollDuration: 600

    });
    myTour3.start();
});


Написал куки таким образом:
function getCookie(cname) {
    var name = cname + "=";
        var ca = document.cookie.split(';');
    for(var i=0; i<ca.length; i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1);
    if (c.indexOf(name) != -1) return c.substring(name.length,c.length);
    }
    return "";
}

 function setCookie(cname, cvalue, exdays) {
     var d = new Date();
     d.setTime(d.getTime() + (exdays*24*60*60*1000));
     var expires = "expires="+d.toUTCString();
     document.cookie = cname + "=" + cvalue + "; " + expires;
 }

 function checkCookiejTour(){
     var cookie=getCookie("jTourExampleCookie");

    if (cookie==null || cookie=="") {
         setCookie("jTourExampleCookie", "1",90);
         jTour().start();
    }{

         jTour().finish();
     }
}

<body onload="checkCookiejTour()"></body>
куки записываются, это видно в консоли разработчика: на текущий момент
ourExampleCookie 1 (исходя из того что я задал) но как все это облагородить и применить к моему сценарию?
Сейчас при обновлении страницы тур запускается... а не должен
  • Вопрос задан
  • 1595 просмотров
Решения вопроса 1
@DragorWW
Front-end Developer
Вот тут есть примеры готового кода с рассказом как это работает
// возвращает cookie с именем name, если есть, если нет, то undefined
function getCookie(name) {
  var matches = document.cookie.match(new RegExp(
    "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
  ));
  return matches ? decodeURIComponent(matches[1]) : undefined;
}

// устанавливает cookie с именем name и значением value
// options - объект с свойствами cookie (expires, path, domain, secure)
function setCookie(name, value, options) {
  options = options || {};

  var expires = options.expires;

  if (typeof expires == "number" && expires) {
    var d = new Date();
    d.setTime(d.getTime() + expires * 1000);
    expires = options.expires = d;
  }
  if (expires && expires.toUTCString) {
    options.expires = expires.toUTCString();
  }

  value = encodeURIComponent(value);

  var updatedCookie = name + "=" + value;

  for (var propName in options) {
    updatedCookie += "; " + propName;
    var propValue = options[propName];
    if (propValue !== true) {
      updatedCookie += "=" + propValue;
    }
  }

  document.cookie = updatedCookie;
}

// удаляет cookie с именем name
function deleteCookie(name) {
  setCookie(name, "", {
    expires: -1
  })
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы