【问题标题】:Cookie in Javascript or JQuery for GDPR用于 GDPR 的 Javascript 或 JQuery 中的 Cookie
【发布时间】:2020-07-19 21:44:02
【问题描述】:

我在 HTML/CSS“动画”之外的 Javascript/JQuery 方面经验有限。

我有一个不使用 cookie 的网站,并且我有一个显示在页面上的横幅加载声明。显然,每次页面加载时都会出现。

我想通过“确定”按钮/链接设置一个 cookie,例如 60 天,在页面加载时读取,如果是肯定的,则不显示该 cookie 横幅。

我一直在互联网上搜索,但我很难找到我认为应该是一个简单的东西,如果你知道如何实现的话。

我也不确定是使用“仅”Javascript 还是使用库 (JQuery) 来实现这一点。

从概念上讲,我认为我需要这样的东西:

在页面加载时,查找 cookie,如果为正值,则不显示 cookie 横幅,否则显示 cookie 横幅。 cookie 横幅上的“确定”按钮创建具有正值的 cookie。 Cookie 将在 60 天后过期。

这是我正在努力解决的语法。有人可以帮忙吗?

【问题讨论】:

  • 使用本地存储代替 cookie 怎么样? w3schools.com/html/html5_webstorage.asp 您可以在按下按钮时将日期和时间存储到局部变量(字符串)中,如果此变量中的日期大于 60 天或没有设置局部变量,则显示横幅。我发现它比 JS 中的 cookie 更容易,但如果你想坚持使用 cookie,请看这里:w3schools.com/js/js_cookies.asp.
  • 嗨,Kaya,感谢您的评论 - 我以前没有使用过网络存储,但在阅读了它之后,这似乎是一个很好的解决方案。这又是我正在努力解决的语法,你能提供我想要实现的任何东西吗?谢谢。

标签: javascript jquery cookies


【解决方案1】:

所需的功能 = 只需将其复制粘贴到您的 js 文件中,我们只需要它们添加和读取 cookie。

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 + ";path=/; sameSite=Strict";
}
function getCookie(cname) {
    var name = cname + "=";
    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 "";
}

这是您需要了解一些正在发生的事情的部分。

要设置 cookie,请添加此行

setCookie("cookieConsent", "YES", 60);

这会调用之前粘贴的函数 copy 并设置一个名为 cookieConsent 且值为 YES 的 cookie。数字 60 是 cookie 应存储的天数。

因此,如果您可以确定需要设置 cookie 的位置,则只需复制粘贴该代码即可。

阅读所说的 cookie。 我们可以随时检查用户是否有cookies

if(getCookie("cookieConsent") === "YES"){
    console.log("They said already said yes, dont show banner")
}

console.log() 行,可以替换为您希望使用的任何所需函数。

【讨论】:

  • 您好 Preben,感谢您的回复。所有这些语法都是我正在努力解决的问题,因为我没有足够的 Javascript 经验。我想我需要做一门课什么的。问候。
  • 我会为你分解它。并更新我的回复。
  • 谢谢 Preben,这对我很有帮助,感谢您的耐心等待。
猜你喜欢
  • 2018-08-10
  • 1970-01-01
  • 2019-07-28
  • 1970-01-01
  • 2013-04-05
  • 2012-03-29
  • 2012-12-27
  • 1970-01-01
  • 2018-11-03
相关资源
最近更新 更多