Cookie 保存/读取无法按预期工作

Cookies saving/reading not working as expected

本文关键字:工作 保存 读取 Cookie      更新时间:2023-09-26

当用户在我的网站上接受 cookie 策略时,我正在尝试存储 cookie,因此当它被接受时,下次用户打开网站或当用户按 F5 时,必须隐藏专门为接受策略而创建的div,问题是出了点问题,因为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,我在正文声明中具有此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"的相同警报,因此它始终读取 null 或与"true"值不同,因此它无法在 cookie 存储/检索系统中工作。

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

我的代码出了什么问题?

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

另请参阅在本地 html 文件中使用 JavaScript 设置 Cookie。