javascript - 在设置 cookie 后运行脚本而不重新加载页面

标签 javascript cookies

我目前正在学习 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 并使用 thencatch 检查 cookie 是否存在。

关于javascript - 在设置 cookie 后运行脚本而不重新加载页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58415543/

相关文章:

javascript - 图像未显示在 Canvas 中

javascript - 在 Ruby on Rails 中的 Javascript 中设置 session

ruby-on-rails - 我可以在 Rails 应用程序中读取但无法设置 cookie

java - Jsoup登录穆迪

javascript - 设置 cookie 只显示一次弹出窗口

Javascript SetTimeout 和循环

javascript - 在 CSS 中每隔一个子层着色

javascript - 如何结合 odata 和 extjs 的示例

javascript - 如何通过 NodeJS 发送带有 cookie 的 HTTP 请求?

javascript - 在 Nuxt 中设置 SameSite cookie 属性