jQuery меняет срок действия куки-файлов со значения времени на значение сеанса - PullRequest
0 голосов
/ 15 февраля 2012

Я абсолютно ничего не знаю о cookie-файлах ...

Я использую Slidedeck на своем сайте, и они предоставляют код, который позволяет людям, которые возвращаются на страницу с слайд-колодой, отображать последние просмотренныескользить вместо возврата к началу.

Однако он установлен на неделю - я бы хотел изменить его на сеансовый, чтобы при закрытии браузера cookie больше не действовал.Это возможно с этим сценарием?

Я читал, что если вы измените срок действия на 0, он будет основан на сеансе - поэтому я изменил:

else {
      var expires = "0";
    }

Но я нене думаю, что это работает из-за оператора if над ним.

// The default slide to start on is 0.
  var startingSlide = 0;
  // If we find a cookie with the name that we previously saved, use it.
  if(readCookie('slideDeckDemoCurrentSlide')){
    // This overrides the default value of 0 if we find a cookie.
    startingSlide = readCookie('slideDeckDemoCurrentSlide');
  }
  var myDeck = $('.slidedeck').slidedeck({
    autoPlay: false,
    cycle: true,
    slideTransition: 'slide',
    touch: false,
    hideSpines: true,
    start: startingSlide, // tell the Deck where to start
    complete: function(deck){
      // Here we will set a cookie for one week.
      // This cookie will store the deck.current value.
      //createCookie(name,value,days)
      createCookie('slideDeckDemoCurrentSlide',deck.current,7)
    }
  });




  function createCookie(name,value,days) {
    if (days) {
      var date = new Date();
      date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
      var expires = "; expires=" + date.toGMTString();
    }
    else {
      var expires = "";
    }
    document.cookie = name+"="+value+expires+"; path=/";
  }

  function readCookie(name) {
    var nameEQ = name + "=";
    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,c.length); }
      if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
  }

  function eraseCookie(name) {
    createCookie(name,"",-1);
  }  

Ответы [ 2 ]

1 голос
/ 11 ноября 2013

Если вы хотите создать сессионный cookie, не используйте опцию expires. Это из официальной документации " jquery cookie ":

Определите время жизни куки. Значение может быть числом, которое будет интерпретируется как дни с момента создания или объект Date. Если опущено, cookie становится сеансовым cookie.

Если вы установите значение expires: 0, то это означает, что cookie не будет сохранен вообще.

1 голос
/ 15 февраля 2012

Сессионные куки-файлы и куки-файлы браузера не имеют ничего общего. Особенно Javascript выполняется на клиенте, поэтому у вас есть доступ только к файлам cookie браузера. Вы можете использовать .unload(), чтобы определить, был ли закрыт браузер или страница закрыта, а затем удалить cookie:

$(window).unload( function () { //delete cookie } );
...