确保在重定向前完成 Google Tag Manager 和 Google Analytics

Nie*_*sma 6 javascript google-analytics google-tag-manager

我有一个指向我的网页的链接,我希望在将用户重定向到外部页面之前使用 Google Analytics 和 Google Tag Manager 跟踪用户。

我想确保在执行重定向之前完成 GA 和 GTM。最好的方法是什么?

一个简单的方法是使用 setTimeout。但是 1000 毫秒是太长还是太短?如果可以在跟踪实际完成时进行重定向,会更喜欢吗?。GTM 和 GA 跟踪是否在文档准备好之前完成?如果不能,这可以强制吗?

<html lang="sv">
<head>
<title></title>
<meta charset="utf-8"/>
<script src="~/Scripts/jquery-2.1.0.min.js"></script>
<!-- ANALYTICS CODE -->
</head>
<body>

<!-- TAG MANAGER CODE -->

<script language="javascript">
    $(function() {
        setTimeout(function() {
            window.location.replace("http://externalwebsite.com");
        },1000);
    });
</script>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

在 GTM 存储桶中,我有 Twitter 和 Facebook 再营销标签。

更新的解决方案

我已经更新了我的解决方案。因为我最感兴趣的是确保 GA 在重定向之前绝对触发,这会更好。

<html lang="sv">
<head>
    <title></title>
    <meta charset="utf-8"/>
    <script src="~/Scripts/jquery-2.1.0.min.js"></script>
    <script language="javascript">

        var redirect = function(waitFor) {
            return function(signal) {
                waitFor[signal] = 1;
                for (var s in waitFor) if (waitFor[s] == 0) return;
                _redirect();
            }
        }({timeout:0,ga:0});

        var redirected = false;
        var _redirect = function () {
            if (!redirected) {
                redirected = true;
                window.location.replace("http://@Model");
            }
        };

        (function (i, s, o, g, r, a, m) {
            i['GoogleAnalyticsObject'] = r; i[r] = i[r] || function () {
                (i[r].q = i[r].q || []).push(arguments)
            }, i[r].l = 1 * new Date(); a = s.createElement(o),
                m = s.getElementsByTagName(o)[0]; a.async = 1; a.src = g; m.parentNode.insertBefore(a, m)
        })(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
        ga('create', 'UA-47608023-1', 'tessin.se');
        ga('require', 'displayfeatures');
        ga('send', 'pageview', {
            'hitCallback': function () {
                redirect("ga");
            }
        });
    </script>

</head>
<body>

@Html.Include("google-tagmanager-redirect.html")

<script language="javascript">
    $(function () {
        setTimeout(function () { redirect("timeout"); }, 1000);
        setTimeout(function () { _redirect(); }, 3000);
    });
</script>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

Eik*_*rff 5

最简单的方法可能是从 GTM 内部进行重定向。

使用重定向代码创建自定义 HTML 标记。然后使用标签 排序来触发重定向标签,这样你就可以确保在重定向之前触发 GA。