我目前正在学习 JavaScript,目前正在尝试使用 cookie。我只是想构建一个具有选择加入功能的 cookie 横幅,以便在设置 cookie 之前分析不应该运行。
所以我有以下代码:
if (getCookie ("cookieTracking") === "1") {
console.log ("Run Script");
}
我的分析程序不应在第一次网页浏览时运行。尽我所能。该页面正在加载并且不运行脚本,因为未设置 cookie。一旦用户激活 cookie 横幅中的跟踪,脚本也将被加载。
现在我的问题:页面现在加载的事实,浏览器不会再次执行 IF 命令。因此,分析代码保持未执行状态。只有当我重新加载页面时,IF 命令才会为真并启动脚本。
这一切都是合乎逻辑的。但这会导致 Analytics 数据失真,因为第一次访问未被计算在内。设置cookie后如何重新执行IF命令?
PS:我今天第一次注册了 Stackoverflow,虽然我已经使用它很长时间了。我希望我能尽我的一份力量,也能帮助到你!
最佳答案
我相信您可以 promise 并执行以下操作:
var cookie = new Promise((res, rej) => {
// Possibly a function call below
document.cookie = "test=1";
// just simplified check
document.cookie.search(/test=1/) ? res() : rej()
})
// call promise to check if it's fullfilled or rejected
cookie.then(() => console.log('set')).catch((err) => console.log('failed'))
上面所做的是创建一个设置 cookie 的新 promise 。之后你搜索 cookie,如果它被设置或等于 1,你就解决了 promise ,否则你拒绝它。
然后调用 cookie 并使用 then
和 catch
检查 cookie 是否存在。
关于javascript - 在设置 cookie 后运行脚本而不重新加载页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58415543/