Cookie并不总是有效

时间:2016-01-25 13:41:31

标签: javascript jquery cookies

我有以下脚本:

function dsm_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 dsm_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) == 0) return c.substring(name.length, c.length);
  }
  return "";
}

jQuery(window).ready(function() {
  var fontsize = dsm_getCookie('class-fontsize');
  jQuery('body').prepend(fontsize); // Debug
  if (fontsize == 1) {
    jQuery('body').addClass('fontsize');
  }

  jQuery('.fontsize-small').click(function() {
    if (jQuery('body').hasClass('fontsize')) {
      jQuery('body').removeClass('fontsize');
    }
    dsm_setCookie('class-fontsize', 0, 30);
  });

  jQuery('.fontsize-large').click(function() {
    if (!jQuery('body').hasClass('fontsize')) {
      jQuery('body').addClass('fontsize');
    }
    dsm_setCookie('class-fontsize', 1, 30);
  });
});

这里我在jsfiddle上做了一个例子,它正常工作。 https://jsfiddle.net/9wdqp161/

现在,当我将脚本添加到我的wordpress时,它有时会起作用,有时却不起作用。我一直试图想好几天,但我似乎无法找到导致它的原因。

3 个答案:

答案 0 :(得分:1)

替代

localstorage

您可以使用本地存储而不是cookie,并且非常易于使用。

e.g。

localStorage.setItem('firstname', 'kaushik'); 
localStorage.getItem('firstname');
// output - kaushik

答案 1 :(得分:0)

使用cookie时,您需要注意以下几点:

  • 每个域名不得超过50个Cookie。
  • 每个域的cookie最大限制为4k左右。即大小 所有饼干不应超过4k。这意味着您可以拥有1个cookie 2k等4k或2个饼干

这可能会对你有帮助。

答案 2 :(得分:0)

我尝试在path中为您的Cookie定义添加dsm_setCookie()

document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/';

Cookie可能默认为当前文档位置的当前路径...可能不是您网站的根目录。