首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >覆盖UTM参数

覆盖UTM参数
EN

Stack Overflow用户
提问于 2019-11-22 09:20:47
回答 2查看 1.1K关注 0票数 1

我们确实有一些活动(谷歌,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 (.)开始的?

我们知道这个东西是如何设置的,这是一个非常糟糕的做法,我们正在努力。

我找到了一个代码片段,它正在操作站点上的链接:

代码语言:javascript
复制
links.forEach(function(link){
 link.setAttribute("href","abo.mysite.com")
})

但我没办法-因为我缺乏经验。

更新

对我的具体需要是这样做的:

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

代码语言:javascript
复制
<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

代码语言:javascript
复制
 <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

代码语言:javascript
复制
<script>
          $('a').each(function(){
  $(this).attr('href', $(this).attr('href') + '?utm_source=' + utm_source + '&utm_campaign' + utm_campaign + '&utm_medium' + utm_medium);
});

            });

编辑感谢米歇尔·皮萨尼

这很好,但是,如果用户没有UTM,并单击该按钮,则UTM将被设置为undefined

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

在你们的帮助下,编辑2和更新终于找到了一个解决方案:

代码语言:javascript
复制
<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>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-23 18:26:44

使用JavaScript,要从页面中的链接中删除UTM参数,可以使用regex尝试这个函数:

代码语言:javascript
复制
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');
}

如果您使用的是,您可以将它添加到一个自定义HTML标记中,并在DOM上激发它。

票数 1
EN

Stack Overflow用户

发布于 2019-11-26 20:47:10

如果希望将片段保存在URL中,可以这样修改函数:

代码语言:javascript
复制
var link = document.getElementsByTagName("a");

 for (var i = 0; i < link.length; i++) {
    arr_link = (link[i].href).split("#");
    var fragment = "";
    if (arr_link[1]) { fragment = "#" + arr_link[1]; }
    var my_new_url = arr_link[0].replace(/(\?)utm[^&]*(?:&utm[^&]*)*&(?=(?!utm[^\s&=]*=)[^\s&=]+=)|\?utm[^&]*(?:&utm[^&]*)*$|&utm[^&]*/gi, '$1');
    link[i].href = my_new_url + fragment;
 }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58991043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档