【问题标题】:Div appears even when cookie policy is still in date即使 cookie 政策仍然有效,也会出现 Div
【发布时间】:2018-10-07 23:37:53
【问题描述】:

我下面的代码应该在单击按钮时设置一个有效期为 60 天的 cookie,这可以正常工作,但是当我在另一个窗口中打开站点或刷新页面时,div 仍然出现,我无法找出原因。

谁能阻止我写错了

(function () {
    "use strict";

    var cookieAlert = document.querySelector(".cookiealert");
    var acceptCookies = document.querySelector(".acceptcookies");

    cookieAlert.offsetHeight; // Force browser to trigger reflow (https://stackoverflow.com/a/39451131)

    if (!getCookie("acceptCookies")) {
       cookieAlert.classList.add("show");
    }

    acceptCookies.addEventListener("click", function () {
        setCookie("acceptCookies", true, 60);
        cookieAlert.classList.remove("show");
    });
})();

// Cookie functions stolen from w3schools
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=/";
}

function 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 "";
}

这是我正在使用的 HTML

<div class="alert alert-dismissible text-center cookiealert show" role="alert">
    <div class="cookiealert-container">
        @privacyText <a href="@privacyLink">Learn more</a>

        <button id="btnCookiePolicy" type="button" class="btn btn-primary btn-sm acceptcookies" aria-label="Close">
            I agree
        </button>
    </div>
</div>

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    这是错误的......

    <div class="alert alert-dismissible text-center cookiealert show" role="alert">
    

    您需要从类列表中删除类 show,因为您希望默认隐藏对话框,然后如果没有 cookie,则添加 show 类。

    只需将该行更改为...

    <div class="alert alert-dismissible text-center cookiealert" role="alert">
    

    这应该可以解决您的问题。

    【讨论】:

    • 谢谢 Archer,忘了我是硬编码的,我想我需要休息一下
    • 不客气。有时你确实需要一双新的眼睛来为你看它:)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-13
    • 2012-11-11
    • 1970-01-01
    • 2011-06-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多