如何在用户访问其他页面时保持 cookie 值?

How to keep a cookie value when user visit other pages?

我想维护一个 cookie,该 cookie 设置为在用户访问其他页面时不消失。我的代码中的情况是,它获取了一个页面位置的参数,并将其保存到/路径中。

这是我的代码:

window.onload = function() {
    try {
        var url_string = (window.location.href).toLowerCase();
        var url = new URL(url_string);
        // Get gclid,token or fbclid parameters
        var gclid = url.searchParams.get("gclid");
        var token = url.searchParams.get("token");
        var fbclid = url.searchParams.get("fbclid");

        // token expires in 6 hours
        document.cookie = `gclid=${gclid}; max-age=21600` + ";path=/";
        document.cookie = `token=${token}; max-age=21600` + ";path=/";
        document.cookie = `fbclid=${fbclid}; max-age=21600` + ";path=/";

    } catch (err) {
        console.log("Issues with Parsing URL Parameter's - " + err);
    }
}

示例:

www.test.com/contact?gclid=123   // saves the cookie value

当转到其他页面时 www.test.com/about 它也会将值设置为空,因为 cookie 来自 url 参数。

gclid=123 存储在路径 / 中的 cookie 中。但是当我转到 wwww.test.com/about

等其他页面时

gclid cookie 将 equal/set 到 null

我的代码中的情况是,每次用户访问页面时,url.searchParams 都会搜索所需的参数,如果它确实找到了这些参数,cookie 将位于 null

如果新 gclid 在我的页面中包含 null 值,我如何保留 cookie gclid 的先前值?如果 gclid 不包含 null 值,则更新 gclid

只检查参数是否存在

window.onload = function () {
  try {
    var url_string = window.location.href.toLowerCase();
    var url = new URL(url_string);
    ['gclid', 'token', 'fbclid'].forEach(function (key) {
      var value = url.searchParams.get(key);
      if (value) {
        document.cookie = `${key}=${value}; max-age=21600` + ';path=/';
      }
    });
  } catch (err) {
    console.log("Issues with Parsing URL Parameter's - " + err);
  }
};