javascript - 在页面加载时检查 cookie 并在按钮单击时更新
问题描述
我正在尝试是否设置了 cookie 检查页面加载(cookieVal = 0
)。如果不是,我想显示一个包含两个按钮的 Bootstrap 4 模式。
如果用户单击接受按钮(“cookiesAccept”),那么我想设置cookieVal = 1
,关闭模式并显示alert
cookie 值。请注意,警报仅用于测试。
模式和按钮工作正常,我可以在页面加载时显示它,但是一旦我添加了当前不允许我单击接受按钮并关闭模式的 cookie 逻辑,我就会遇到问题。
有人可以告诉我我必须在这里添加或更改什么吗?
这是我的 JS,它包含在每个页面的标题中:
$(document).ready(function() {
checkCookie();
$('#cookiesAccept').click(function() {
setCookie("privacy", 1, 0);
$('.modal').modal('hide');
alert("Cookie set to " + privacy);
});
});
function setCookie(cookie, cookieVal, expiry) {
var d = new Date();
d.setTime(d.getTime() + (expiry * 24 * 60 * 60 * 1000));
var expires = "expires=" + d.toUTCString();
document.cookie = cookieName + "=" + cookieVal + ";" + expires + ";path=/";
}
function getCookie(cookieName) {
var name = cookieName + "=";
var decodedCookie = decodeURIComponent(document.cookie);
var ca = decodedCookie.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 "";
}
function checkCookie() {
var privacy = getCookie("privacy");
if (privacy != 0) {
alert("Cookie set to " + privacy);
} else {
// show cookie modal
$('.modal').modal('show');
}
}
提前谢谢了
解决方案
当您在单击处理程序中为 setCookie 函数提供 0 作为到期值时,您的 cookie 将立即到期。
d.setTime(d.getTime() + (expiry * 24 * 60 * 60 * 1000));
这意味着当前时间 + (0 * 24 * 60 * 60 * 1000)。
推荐阅读
- javascript - 如何 .map 嵌套在另一个数组中的数组元素?
- c++ - 如何设置 std::scientific 的格式
- html - 从外部管理页面动态更改 HTML 内容
- javascript - 如果我使一个 dialog() 可拖动,并使可放置将其 innerHTML 更改为可拖动元素的 innerHTML,则 innerHTML 为“CLOSE”。为什么?
- python - 组合多索引数据框中的列
- python - TypeError:只有大小为 1 的数组可以转换为 Python 标量 Numpy
- excel - 在 vba 中使用 Match 函数的 if 语句
- cors - 在 Uno Platform WebAssembly 上下载一个大文件
- sql-server - 在日志中获取太多打开的文件错误
- java - 如何在 toast 中设置重力,我可以更改警报对话框的位置吗?