检查我创建的特定 cookie 是否存在,如果不是我的 cookie 栏通知,则执行下一个功能

Check whether a specific cookie I created is present and to execute the next function if it is not for my cookie bar notice

我是 javascript 的新手,我一直在尝试编写 cookie 栏通知。

我学会了如何使用 javascript 将 cookie 栏的 html 插入页面,以及如何使用 name/value 对 (CookieConsent=true) 创建 cookie单击接受按钮。

但我一直坚持 - 检查页面加载后是否存在特定 cookie (CookieConsent=true) 并执行以下操作:

我试图确保在页面加载时触发 cookie 检查功能,并且现在选择使用 EventListener - DOMContentLoaded。

这是一个基本示例来说明我的代码布局:

// When DOM has loaded trigger cookieCheck function
document.addEventListener('DOMContentLoaded', cookieCheck);

// Checks whether cookie is present and whether to execute cookiebar function or not
function cookieCheck() {
  
}

// Insert HTML for cookiebar notice and accept button into page
function cookiebar() {
  // The accept button triggers the create cookie function with  
  // a name/value pair of CookieConsent=true
}

// Creates consent cookie
function createCookie() {

}

我不会包括我试图为我的问题编写的代码,因为它完全是一团糟,毫无意义。对不起。

我一直在使用 w3schools javascript cookies tutorial 并在 Internet 上找到了许多其他示例来了解如何设置、获取和检查 cookie。但是对于我的代码,我完全卡住了。

您可以尝试使用此解决方案:

// When DOM has loaded trigger cookieCheck function
document.addEventListener('DOMContentLoaded', cookieCheck);

// Checks whether cookie is present and whether to execute cookiebar function or not
function cookieCheck() {
  const cookies = getCookies();
  if(cookies.CookieConsent) {
    /**
    * Do your stuff when cookie is set
    **/
    
    cookiebar();
  } else {
    /**
    * Do your stuff when cookie is NOT set
    **/
  }
}

// Insert HTML for cookiebar notice and accept button into page
function cookiebar() {
  /**
  * Function for CookieBar insertion
  **/
}

// Creates consent cookie
function createCookie(name, value) {
  document.cookie = [name, value].join('=');
}

function getCookies() {

  let cookies = {};

  document.cookie.split(";").forEach((cookie) => {
      cookie = cookie.trim().split("=");
      let name = cookie[0];
      let val = cookie[1];
      cookies[name] = val;
  });

  return cookies;
  
}