【问题标题】:Google Analytics timing event not sent未发送 Google Analytics 计时事件
【发布时间】:2015-08-19 00:32:27
【问题描述】:

编辑:这是实际无法正常工作的代码

(我已更改它以简化问题)

<script>
    // save startTime at the begginning of the page
    var _startTime = new Date().getTime();
</script>
<!--
    ... page code here ...
-->
<script>
    //Google Analytics code
    (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-XXXXXX-Y', 'auto');
    ga('send', 'pageview');

    (function (w,d,$,ga,createFunction) {

        createFunction = function(timingVar) {
            return function() {
                var time = (new Date().getTime() - _startTime);

                if (time > 0) {
                    ga('send', 'timing', 'performance', timingVar, time, 'desktop');
                } //if

                if (console && console.log) console.log(timingVar +':'+ time);

            };
        };

        $(d).on('ready',createFunction('page ready'));
        $(w).on('load',createFunction('page load'));
    })(window,document,jQuery,ga);
</script>

仍然不确定为什么这段代码不起作用。

这是我的原始问题(代码有效)

我正在尝试使用 Google Analytics 的User Timings 功能来跟踪不同场景下的页面加载时间。

我无法在页面加载时发送计时命令。这是我用来实现这一点的代码。

<script>
    // save startTime at the begginning of the page
    var _startTime = new Date().getTime();
</script>
<!--
    ... page code here ...
-->
<script>
    //Google Analytics code
    (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-XXXXXX-Y', 'auto');
    ga('send', 'pageview');

    // track document ready even time
    $(document).on('ready',function() {
        var time = (new Date().getTime() - _startTime);

        if (time > 0) {
            ga('send', 'timing', 'performance', 'page ready', time, 'desktop');
        } //if

        console.log('page ready:'+ time);
    });

    // track window load time
    $(window).on('load',function() {
        var time = (new Date().getTime() - _startTime);

        if (time > 0) {
            ga('send', 'timing', 'performance', 'page load', time, 'desktop');
        } //if

        console.log('page load:'+ time);
    });


</script>

我正在 Chrome 中对此进行测试,并安装了 Google Analytics Debugger 扩展。

我查看控制台,我看到正在发送综合浏览量和计时“页面就绪”命令,但从未发送计时“页面加载”命令。

console.log() 都显示正在触发的事件,但没有数据发送到 Google Analytics 以用于计时“页面加载”命令。

以下是我完成的其他验证:

  • 时间的值始终是整数。
  • 如果我只有“页面加载”计时命令也没关系

这是我在只有浏览量和时间页面加载事件时得到的结果:

关于在窗口的加载事件中未发送命令的原因有什么想法吗?

【问题讨论】:

  • 这对我来说是正确的。调试器对ga('send', 'timing', ...) 命令有何看法?它应该要么说成功,要么告诉你失败的原因。
  • 您是否等待 24 小时后数据才会显示在标准报告中?
  • @PhilipWalton 我已经编辑了问题以显示我从调试器中得到的信息。该命令根本没有被触发,没有消息说它失败了,很奇怪吧?
  • @DaImTo 24 小时后我在报告中看到了一些数据,但我有 14 000 个文档准备就绪事件和 900 个页面加载事件(应该等于相同的数量)。因此,该命令似乎正在为某些用户触发,但我无法看到从浏览器发送的任何数据。我已经删除了文档准备命令,现在我只剩下页面加载一个了。明天我会报告结果。

标签: javascript google-analytics analytics


【解决方案1】:

您实际运行的代码与您粘贴在此页面上的代码必须有所不同。这里的一切对我来说都很好,如果我运行你的确切代码,它就可以工作。

你可以看看这个 jsbin 演示来证明。请注意三个点击是如何发送的:1 次网页浏览和 2 次定时点击。
http://jsbin.com/kafeduweme/edit?html,console

【讨论】:

  • 好的,我的代码周围有一个(function (w,d,$,ga) { ... })(window,document,jQuery,ga),但它不起作用。我删除了包装函数,两个命令都被发送(不管 siteSpeedSampleRate)。我将更新问题以反映这一点。我已经从我的问题中删除以简化代码,我的错。
【解决方案2】:

定时报告的默认采样率为 1%

这不是一个错误。这是关于跟踪器本身的默认配置。此功能受采样限制,默认情况下此功能具有 1% 采样以用于时序跟踪功能。因此在控制台中看到事件的可能性非常低。

解决方案

启动跟踪器时设置采样率:

ga('create', 'UA-XXXX-Y', {'siteSpeedSampleRate': 50});

文档

字段参考: https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference#siteSpeedSampleRate

功能说明: https://developers.google.com/analytics/devguides/collection/analyticsjs/user-timings

【讨论】:

  • 好的,我已经尝试使用 50 和 100 的新站点采样率,现在我看到了一个发送到 GA 的信标。不过,它似乎不包含类别、变量名称、值和标签。这是调试器显示goo.gl/photos/u4AnnmeyuzwaPtXv7 的屏幕截图。我会等着看数据是否在计时报告中。
  • 整个答案都不正确。 siteSpeedSampleRate 对发送定时没有影响。它只会影响analytics.js自动发送的网站速度。
  • 你愿意更新这个答案吗?我为此烧了几天(因为我不得不恢复使用正常事件而不是计时事件并重写我的仪表板)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-10
  • 2012-04-02
  • 1970-01-01
相关资源
最近更新 更多