首页 > 解决方案 > 在页面加载时检查 cookie 并在按钮单击时更新

问题描述

我正在尝试是否设置了 cookie 检查页面加载(cookieVal = 0)。如果不是,我想显示一个包含两个按钮的 Bootstrap 4 模式。

如果用户单击接受按钮(“cookiesAccept”),那么我想设置cookieVal = 1,关闭模式并显示alertcookie 值。请注意,警报仅用于测试。

模式和按钮工作正常,我可以在页面加载时显示它,但是一旦我添加了当前不允许我单击接受按钮并关闭模式的 cookie 逻辑,我就会遇到问题。

有人可以告诉我我必须在这里添加或更改什么吗?

这是我的 JS,它包含在每个页面的标题中:

$(document).ready(function() {
  checkCookie();

  $('#cookiesAccept').click(function() {
    setCookie("privacy", 1, 0);
    $('.modal').modal('hide');
    alert("Cookie set to " + privacy);
  });
});

function setCookie(cookie, cookieVal, expiry) {
  var d = new Date();
  d.setTime(d.getTime() + (expiry * 24 * 60 * 60 * 1000));
  var expires = "expires=" + d.toUTCString();
  document.cookie = cookieName + "=" + cookieVal + ";" + expires + ";path=/";
}

function getCookie(cookieName) {
  var name = cookieName + "=";
  var decodedCookie = decodeURIComponent(document.cookie);
  var ca = decodedCookie.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 "";
}

function checkCookie() {
  var privacy = getCookie("privacy");
  if (privacy != 0) {
    alert("Cookie set to " + privacy);
  } else {
    // show cookie modal
    $('.modal').modal('show');
  }
}

提前谢谢了

标签: javascriptjquerycookiesdocument-ready

解决方案


当您在单击处理程序中为 setCookie 函数提供 0 作为到期值时,您的 cookie 将立即到期。

d.setTime(d.getTime() + (expiry * 24 * 60 * 60 * 1000));

这意味着当前时间 + (0 * 24 * 60 * 60 * 1000)。


推荐阅读