根据URL参数

时间:2016-01-29 17:36:18

标签: javascript cookies google-tag-manager

我很好奇是否有人可以帮助一位非常新的Javascript用户根据特定的网址参数了解如何设置Cookie。我看到在这篇文章中介绍了使用JavaScript从URL中提取数据: How can I get query string values in JavaScript?

但我无法弄清楚如何将该信息提取到cookie中以在网站上的用户会话中存储信息。

我想获取3个主要网址参数: utm_source utm_medium utm_campaign

然后使用Javascript将它们存储在Google跟踪代码管理器中的Cookie中。

我无法解决这个问题。任何帮助将不胜感激。对不起,我没有太多的代码可供参考,但我现在已经进行了几个小时的实验(并且失败了)。

非常感谢您对此的任何见解。

欢呼, 梅丽莎

编辑:
对不起......我不希望有人为我写这篇文章,我只是没想到我的失败尝试会帮助任何人看到我想要做的事情,所以我刚刚解释过。

这是我现在的代码,我知道它的工作方式。我正在编辑以前的cookie,用于将网站引荐来源存储在cookie中。因此,就在现在,cookie会将引用者存储在第一个网页浏览中,然后如果您转到另一个页面,它将显示{{utm_medium}}并在整个访问过程中继续显示。我希望它不显示引荐来源,但如果可能的话,输出显示{{utm_source}} | {{utm_medium}} | {{utm_campaign}}的Cookie ...

再次感谢您提供任何帮助或指示或文章。对此,我真的非常感激。

<script> //get referrer info and shorten it
var ref = {{Referrer}}

function extractDomain(url) {
  var domain;
  //find & remove protocol (http, ftp, etc.) and get domain
  if (url.indexOf("://") > -1) {
    domain = url.split('/')[2];
  } else {
    domain = url.split('/')[0];
  }
  //find & remove port number
  domain = domain.split(':')[0];
  return domain;
}
ref = extractDomain(ref);
//create cookie 
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=/";
}
var cookie = "";
//check if UTMs are present and set cookie content to the source utm  
if ({{utm_source}}) {
  createCookie("utmsource", cookie + {{utm_source}}, 1000)
} else if ({{utm_medium}}) {
  createCookie("utmsource", cookie + "Email", 1000)
    //check if referrer is present and set cookie content to the referrer
} else if ({{utm_campaign}}) {
  createCookie("utmsource", cookie + "{{utm_campaign}}", 1000)
} else if {
  createCookie("utmsource", cookie + "Email", 1000)
};
</script>

1 个答案:

答案 0 :(得分:0)

当您使用cookie + something时,您不会更新cookie字符串。因此,每次执行此操作时,您只需与此字符串的原始空值连接即可。不要多次调用setcookie,而是在测试不同的变量时更新cookie字符串,然后在最后使用组合值调用setcookie

您不应该在每次测试之间使用else if,因为如果第一个变量不存在,那么只会将第二个变量添加到cookie中。但是你想要把所有变量放到cookie中。

var cookie = "";
if ({{utm_source}}) {
    cookie += {{utm_source}};
}

if ({{utm_medium}}) {
    cookie += ' | ' + {{utm_medium}};
} else {
    cookie += ' | Email';
}

if ({{utm_campaign}}) {
    cookie += ' | ' + {{utm_campaign}};
} else {
    cookie += ' | Email';
}

setcookie('utm_source', cookie, 1000);