Javascript 如何将查询字符串数据传递到我的网站的所有页面?

Javascript 如何将查询字符串数据传递到我的网站的所有页面?,javascript,google-tag-manager,Javascript,Google Tag Manager,我正在尝试将我的facebook广告中的UTM参数传递到我网站上的所有页面 查询字符串示例:www.mysite.com/?utm\u source=facebook&utm\u medium=psocial&utm\u campaign=summer&utm\u content=pool&fbclid=1234Jfshio 通常,utm参数将存在于用户访问的第一个页面上,但一旦它们导航到新页面,查询字符串将丢失 我希望在用户会话期间导航到的所有页面的URL末尾追加查询字符串 我必须这样做,当他

我正在尝试将我的facebook广告中的UTM参数传递到我网站上的所有页面

查询字符串示例:www.mysite.com/?utm\u source=facebook&utm\u medium=psocial&utm\u campaign=summer&utm\u content=pool&fbclid=1234Jfshio

通常,utm参数将存在于用户访问的第一个页面上,但一旦它们导航到新页面,查询字符串将丢失

我希望在用户会话期间导航到的所有页面的URL末尾追加查询字符串

我必须这样做,当他们打开与我们的LiveChat服务聊天时,我们的服务捕获的起始URL包含他们单击的广告中的utm参数

以下是我当前使用的代码-但它没有按预期工作:


(功能(){
var utmInheritingDomain=“brilliance.com”//替换此域
utmRegExp=/(\&\?)utm[A-Za-z]+=[A-Za-z0-9]+/gi,
links=document.getElementsByTagName(“a”),
utms=[
“utm_source={{url-utm_source}}}”,//在GTM中,创建url变量utm_source
“utm_medium={{url-utm_medium}}”,//在GTM中,创建url变量utm_medium
“fbclid={url-fbclid}}”//在GTM中,创建url变量fbclid
];
对于(var索引=0;索引0{//脚本正在查找与utmInheritingDomain的所有链接
tempLink=tempLink.replace(utmRegExp,“”);
tempParts=tempLink.split(“#”);
if(tempParts[0].indexOf(“?”)<0){
tempParts[0]+=“?”+utms.join(&”);//该脚本将UTM参数添加到您定义的域的所有链接中
}否则{
tempParts[0]+=“&”+utms.join(“&”);
}
tempLink=tempParts.join(“#”);
}
链接[index].href=tempLink;
}
}());

看起来您需要正确检索查询字符串值。我曾经更新过你的代码(如下)。注意使用了
urlparms.get()


(功能(){
const urlParams=新的URLSearchParams(window.location.search);
var utmInheritingDomain=“brilliance.com”//替换此域
utmRegExp=/(\&\?)utm[A-Za-z]+=[A-Za-z0-9]+/gi,
links=document.getElementsByTagName(“a”),
utms=[
“utm_source=“+urlparms.get('utm_source'),//在GTM中,创建URL变量utm_source
“utm_medium=“+urlparms.get('utm_medium'),//在GTM中,创建URL变量utm_medium
“fbclid=“+urlParams.get('fbclid')//在GTM中,创建URL变量fbclid
];
对于(var索引=0;索引0{//脚本正在查找与utmInheritingDomain的所有链接
tempLink=tempLink.replace(utmRegExp,“”);
tempParts=tempLink.split(“#”);
if(tempParts[0].indexOf(“?”)<0){
tempParts[0]+=“?”+utms.join(&”);//该脚本将UTM参数添加到您定义的域的所有链接中
}否则{
tempParts[0]+=“&”+utms.join(“&”);
}
tempLink=tempParts.join(“#”);
}
链接[index].href=tempLink;
}
}());

我在Google Tag Manager的第3行中发现一个错误字符2:const urlparms=new URLSearchParams(window.location.search);显然,“const”这个短语在Google标记管理器中不起作用。Google标记管理器只允许您生成起始代码。一旦你创建了代码,它就会出现在你的网站上。当你把我的代码放在你的网站上时会发生什么?
<script type="text/javascript">
 (function() {
 const urlParams = new URLSearchParams(window.location.search);
 var utmInheritingDomain = "brilliance.com", // REPLACE THIS DOMAIN
 utmRegExp = /(\&|\?)utm_[A-Za-z]+=[A-Za-z0-9]+/gi,
 links = document.getElementsByTagName("a"),
 utms = [
 "utm_source=" + urlParams.get('utm_source'), // IN GTM, CREATE A URL VARIABLE utm_source
 "utm_medium=" + urlParams.get('utm_medium'), // IN GTM, CREATE A URL VARIABLE utm_medium
 "fbclid=" + urlParams.get( 'fbclid' ) // IN GTM, CREATE A URL VARIABLE fbclid
 ];

 for (var index = 0; index < links.length; index += 1) {
 var tempLink = links[index].href,
 tempParts;

 if (tempLink.indexOf(utmInheritingDomain) > 0) { // The script is looking for all links with the utmInheritingDomain
 tempLink = tempLink.replace(utmRegExp, "");

 tempParts = tempLink.split("#");

 if (tempParts[0].indexOf("?") < 0 ) {
 tempParts[0] += "?" + utms.join("&"); // The script adds UTM parameters to all links with the domain you've defined
 } else {
 tempParts[0] += "&" + utms.join("&");
 }

 tempLink = tempParts.join("#");
 }

 links[index].href = tempLink;
 }
 }());
</script>