【问题标题】:Cookies saving/reading not working as expectedCookie 保存/读取未按预期工作
【发布时间】:2022-03-03 07:37:20
【问题描述】:

当用户在我的网站上接受 cookie 策略时,我正在尝试存储 cookie,因此当它被接受时,专门为接受该策略而创建的 div 必须在下次用户打开网站或用户按下时隐藏F5,问题是出现了问题,因为 div 没有被隐藏。

这是 div 代码:

<div id="cookiesBar">
        <div class="inner">
            Solicitamos su permiso para obtener datos estadísticos de su navegación en esta web, en cumplimiento del Real 
            Decreto-ley 13/2012. Si continúa navegando consideramos que acepta el uso de cookies.
            <a href="javascript:void(0);" class="ok" onclick="acceptCookiesPolicy();"><b>OK</b></a> | 
            <a href="http://politicadecookies.com" target="_blank" class="info">Más información</a>
        </div>
    </div>

要决定是否显示该 div,我在 body 声明中有这个 onload 事件:

<body onload="checkIfCookiesPolicyIsAccepted();">

这是我的 javascript 文件:

function createCookie(name,value,days) {
  if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
  }
  else var expires = "";
  document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
  var nameEQ = name + "=";
  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,c.length);
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
  }
  return null;
}

function eraseCookie(name) {
  createCookie(name,"",-1);
}

function acceptCookiesPolicy(){
  createCookie("cookiesPolicyAccepted", "true", 365);
  document.getElementById("cookiesBar").style.display="none";
}

function checkIfCookiesPolicyIsAccepted(){
  if(readCookie("cookiesPolicyAccepted")!="true"){
    document.getElementById("cookiesBar").style.display="block";
    window.alert("el cookie NO es true");
  }else{
    document.getElementById("cookiesBar").style.display="none";
    window.alert("el cookie es true");
  }
}

如您所见,我在checkIfCookiesPolictyIsAccepted 方法中添加了一个window.alert,它始终显示相同的警报,并带有相同的文本“el cookie NO es true”,因此它始终读取空值或不同于“ true" 值,因此它无法在 cookie 存储/检索系统中运行。

我从这里获得了这个 cookie 存储/检索系统:http://www.quirksmode.org/js/cookies.html

我的代码有什么问题?

【问题讨论】:

  • 您确定要在全局范围内定义函数,而不是在其他函数内定义函数吗?您是否在控制台中遇到任何错误?
  • 您是否碰巧使用 file:/// 协议尝试过这个?使用 file:/// 协议浏览时不设置 Cookie,具体取决于浏览器。
  • @Gothdo 函数存储在 .js 文件中,以这种方式添加到 html 文件的标题中:
  • @reinder 我不明白你的意思,我是 html css js 的新手,刚刚开始。不知道你在说什么
  • 如果我在 chrome 控制台中尝试这些功能,createCookie("cookiesPolicyAccepted", "true",3) 在控制台中写入 undefined 并且 readCookie("cookiesPolicyAccepted") 在控制台中写入 null。不知道这是否正常

标签: javascript html css cookies


【解决方案1】:

您通常不能在通过file:// 协议访问的文件(即本地文件)中设置设置 cookie。您必须使用本地服务器。

另见Setting Cookies using JavaScript in a local html file

【讨论】:

    猜你喜欢
    • 2020-07-19
    • 1970-01-01
    • 2016-09-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-20
    • 2016-05-02
    • 1970-01-01
    • 2017-06-22
    相关资源
    最近更新 更多