【发布时间】: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