gpt4 book ai didi

javascript - 覆盖 UTM 参数

转载 作者:行者123 更新时间:2023-12-01 00:26:02 27 4
gpt4 key购买 nike

我们确实有一些营销事件(Google、facebook...),当用户到达登陆页面 (abo.mysite.com) 时,他确实拥有 utm 参数 utm_source=theCampaignSource。当用户点击 CTA 时,CTA 会给出一个新的 UTM utm_source=abo,然后他会转到 shop.mysite.com。

我们无法从 abo.mysite.com 中删除 UTM。

有没有一种方法可以检查用户是否已经拥有 UTM,以及何时拥有 UTM 将其保留到 shop.mysite.com?那么我们知道该用户来自 Google (...)?

我们知道这个东西的设置方式是一种非常糟糕的做法,我们正在努力解决它。

我发现了一个正在操作网站上的链接的代码片段:


links.forEach(function(link){
link.setAttribute("href","abo.mysite.com")
})

但我无法让它工作 - 因为我确实缺乏经验。

更新

根据我的具体需求,这样做了:

1) 从网站链接中删除现有的 UTM

<script>
var link = document.getElementsByTagName("a");

for (var i = 0; i < link.length; i++) {
link[i].href = link[i].href.replace(/(\?)utm[^&]*(?:&utm[^&]*)*&(?=(?!utm[^\s&=]*=)[^\s&=]+=)|\?utm[^&]*(?:&utm[^&]*)*$|&utm[^&]*/gi, '$1');
}
</script>

2) 对 URL 中的 UTM 进行哈希处理

 <script>
if(!window.jQuery) {
document.write('<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js">\x3C/script>');
}
</script>

<script type="text/javascript">
$(document).ready(function() {
function getUrlVars() {
var vars = [],
hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for (var i = 0; i < hashes.length; i++) {
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
}

var parameters = getUrlVars();
var utm_source = decodeURIComponent(parameters['utm_source']);
var utm_campaign = decodeURIComponent(parameters['utm_campaign']);
var utm_medium = decodeURIComponent(parameters['utm_medium']);
</script>

3)使用哈希 UTM 重写网站上的每个 URL

<script>
$('a').each(function(){
$(this).attr('href', $(this).attr('href') + '?utm_source=' + utm_source + '&utm_campaign' + utm_campaign + '&utm_medium' + utm_medium);
});

});

编辑感谢米歇尔·皮萨尼

这很有效 - 但是,如果用户没有 UTM,并且他单击该按钮,UTM 将被设置为 未定义

是否有一种方法可以在用户已有 UTM 参数时从 URL 设置 UTM 参数,或者在用户 URL 中没有 UTM 时使用现有的 UTM(硬编码在按钮中)。

编辑 2 并更新最后 - 在你们的帮助下 - 我找到了解决方案:

<script>
var link = document.querySelectorAll('a:not([href*="#"])');
for (var i = 0; i < link.length; i++) {
//link[i].href = link[i].href.replace(/(\?)utm[^&]*(?:&utm[^&]*)*&(?=(?!utm[^\s&=]*=)[^\s&=]+=)|\?utm[^&]*(?:&utm[^&]*)*$|&utm[^&]*/gi, '$1');
}
</script>


<script type="text/javascript">

$(document).ready(function() {
function getUrlVars() {
var vars = [],
hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for (var i = 0; i < hashes.length; i++) {
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
}

//var parameters = getUrlVars();
//var utm_source = decodeURIComponent(parameters['utm_source']);
//var utm_campaign = decodeURIComponent(parameters['utm_campaign']);
//var utm_medium = decodeURIComponent(parameters['utm_medium']);
var url_string = window.location.href; //window.location.href
var url = new URL(url_string);
//var c = url.searchParams.get("c");

var utm_source = url.searchParams.get("utm_source");
var utm_campaign = url.searchParams.get("utm_campaign");
var utm_medium = url.searchParams.get("utm_medium");




$('a:not([href^="#"])').each(function() {
if(utm_source != "" && utm_source != null){
var href = $(this).attr("href");
href = href.replace(/(\?)utm[^&]*(?:&utm[^&]*)*&(?=(?!utm[^\s&=]*=)[^\s&=]+=)|\?utm[^&]*(?:&utm[^&]*)*$|&utm[^&]*/gi, '$1');
$(this).attr("href",href);
$(this).attr('href', $(this).attr('href') + '?utm_source=' + utm_source + '&utm_campaign=' + utm_campaign + '&utm_medium=' + utm_medium);
}
});


});

</script>

最佳答案

使用 JavaScript,要从页面链接中删除 UTM 参数,您可以使用正则表达式尝试此功能:

var link = document.getElementsByTagName("a");

for (var i = 0; i < link.length; i++) {
link[i].href = link[i].href.replace(/(\?)utm[^&]*(?:&utm[^&]*)*&(?=(?!utm[^\s&=]*=)[^\s&=]+=)|\?utm[^&]*(?:&utm[^&]*)*$|&utm[^&]*/gi, '$1');
}

如果您使用 Google 跟踪代码管理器,您可以将其添加到自定义 HTML 标记中,并在 DOM Ready 上触发它。

关于javascript - 覆盖 UTM 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58991043/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com