未发送Google Analytics计时活动

时间:2015-08-19 00:32:28

标签: javascript google-analytics analytics

编辑:以下是无法正常工作的代码

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

<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扩展程序。

我在控制台中查看,我看到了综合浏览量和时间安排&#34;页面已准备好&#34;正在发送的命令,但时间和页面加载&#34;命令永远不会发送。

两个console.log()都显示正在触发的事件,但没有数据发送到Google Analytics以获取时间&#34;页面加载&#34;命令。

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

  • 时间的值始终是整数。
  • 如果我只有&#34;页面加载&#34;那就无所谓了。时间命令

以下是仅具有网页浏览和时序页面加载事件时获得的结果: Console Results

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

2 个答案:

答案 0 :(得分:2)

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

您可以查看此jsbin演示以获取证据。注意如何发送三次点击:1次综合浏览和2次定时点击 http://jsbin.com/kafeduweme/edit?html,console

答案 1 :(得分:-1)

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

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

解决方案

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

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<a target="_blank" href="http://google.com">Hit me!</a>
<input></input>

文档

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

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