【问题标题】:How can I set a cookie to expire after x days with this code I have? [duplicate]如何使用我拥有的此代码将 cookie 设置为在 x 天后过期? [复制]
【发布时间】:2024-04-29 03:50:01
【问题描述】:

可能重复:
What is the “best” way to get and set a single cookie value using JavaScript

所以我有这段代码(我没有制作),它基本上制作了一个带有 X 的容器,所以当我按下 X 时,div 容器关闭。但是,当您刷新页面时,div 容器会再次出现。

我怎样才能做到这一点,当用户按下 X 按钮时,该用户将永远不会在该页面上再次看到 div 容器(或在 30 天之类的固定时间内)?

如果可能的话,我想更进一步,当用户按下 X 按钮时,他/她将永远不会在我的网站上再次看到 div 容器,因为我计划实施相同的 div 容器在我的网站上。

希望这不会太令人困惑,并且有人可以帮助我。谢谢!

HTML 代码:

<div id="bottom_ad">
    <div id="close_ad" onclick="close_bottom_ad();">X</div>
    <!-- Ad Content -->
</div>

CSS 代码:

#bottom_ad
{
    position: absolute;
    right: 0;
    bottom: 0;
    left: 0;
    height: 80px;
    background: #000;
}
#close_ad
{
    position: absolute;
    top: 8px;
    right: 8px;
    width: 15px;
    height: 15px;
    color: #fff;
}

JavaScript(位于文件底部,标签之前。) 代码:

<script type="text/javascript">
    // I may have sorta kinda taken this function from W3Schools. :S
    function getCookie(c_name)
    {
        var i,x,y,ARRcookies=document.cookie.split(";");
        for (i=0;i<ARRcookies.length;i++)
        {
            x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
            y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
            x=x.replace(/^\s+|\s+$/g,"");
            if (x==c_name)
            {
                return unescape(y);
            }
        }
    }

    var ad_cookie = getCookie("closedAd");

    if (ad_cookie != null && ad_cookie != "")
    {
        document.getElementById("bottom_ad").style.display="none";
    }

    function close_bottom_ad()
    {
        document.getElementById("bottom_ad").style.display="none";
        document.cookie = "closedAd=true;";
    }
</script>

【问题讨论】:

  • 不是吗?我不知道。我从不接触 Javascript,但我想要这种效果。而且我这辈子从来没有见过那个线程。
  • 嗯,你想知道如何设置cookie吗?所以我在这里搜索并找到了这个问题。我认为接受的答案会帮助你,并且正在做你想做的事。所以我决定投票赞成将其作为副本关闭。
  • 如果您将 html 原样放置在包含脚本的所有页面上,则在人们删除 cookie 之前,广告永远不会显示。如果您的页面与其他页面不在同一目录中,则需要添加 cookie 的路径:document.cookie = "closedAd=true;path=/"; 请参阅另一个问题的 createCookie 以获取具有到期日期的页面
  • 好的,我明白了。现在实际上是凌晨 4 点 47 分。我醒来时会检查它。谢谢。
  • 你说的真有趣,你这辈子都没见过这个帖子:D,你不在法庭上

标签: javascript cookies


【解决方案1】:

要为您的 cookie 设置 30 天的过期时间,您需要为 cookie 添加过期时间。这是一个非常简单的 cookie 函数,它设置一个 cookie 为 N 天:

function createCookie(name, value, days) {
    var date, expires;
    if (days) {
        date = new Date();
        date.setDate(date.getDate()+days);
        expires = "; expires="+date.toUTCString();
    } else {
        expires = "";
    }
    document.cookie = name+"="+value+expires+"; path=/";
}

通过在 cookie 中设置适当的过期日期,届时将自动将其删除。

然后,当您的页面加载时(您必须等到页面完成加载才能尝试修改它),您可以检查您的 cookie closeAd 是否已设置,如果已设置,则执行代码以隐藏广告。为了获得更无闪烁的观看体验(因此广告不会先显示打开然后关闭),您可以从隐藏广告开始,仅在没有 cookie 时显示。或者只有在没有cookie的情况下才能动态添加到页面中。

【讨论】:

    最近更新 更多