Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 谷歌分析计时事件未发送_Javascript_Google Analytics_Analytics - Fatal编程技术网

Javascript 谷歌分析计时事件未发送

Javascript 谷歌分析计时事件未发送,javascript,google-analytics,analytics,Javascript,Google Analytics,Analytics,编辑:这里是实际不起作用的代码 (为了简化问题,我修改了它) //在页面开始时保存开始时间 var_startTime=new Date().getTime(); //谷歌分析代码 (函数(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]| |函数(){ (i[r].q=i[r].q | |[]).push(参数)},i[r].l=1*新日期();a=s.createElement(o), m=s.getElementsByTagNam

编辑:这里是实际不起作用的代码

(为了简化问题,我修改了它)


//在页面开始时保存开始时间
var_startTime=new Date().getTime();
//谷歌分析代码
(函数(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]| |函数(){
(i[r].q=i[r].q | |[]).push(参数)},i[r].l=1*新日期();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(窗口,文档,“脚本”,“www.google-analytics.com/analytics.js”,“ga”);
ga(“创建”、“UA-XXXXXX-Y”、“自动”);
ga(‘发送’、‘页面浏览’);
(函数(w,d,$,ga,createFunction){
createFunction=函数(计时变量){
返回函数(){
var time=(new Date().getTime()-\u startTime);
如果(时间>0){
ga(“发送”、“计时”、“性能”、“计时变量”、“时间”、“桌面”);
}//如果
if(console&&console.log)console.log(timingVar+':'+时间);
};
};
$(d).on('ready',createFunction('page ready');
$(w).on('load',createFunction('page load'));
})(窗口、文档、jQuery、ga);
仍然不确定为什么这个代码不起作用

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

我正在尝试使用谷歌分析的功能来跟踪不同场景下的页面加载时间

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

<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>

//在页面开始时保存开始时间
var_startTime=new Date().getTime();
//谷歌分析代码
(函数(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]| |函数(){
(i[r].q=i[r].q | |[]).push(参数)},i[r].l=1*新日期();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(窗口,文档,“脚本”,“www.google-analytics.com/analytics.js”,“ga”);
ga(“创建”、“UA-XXXXXX-Y”、“自动”);
ga(‘发送’、‘页面浏览’);
//跟踪文档准备就绪时间
$(文档).on('ready',function(){
var time=(new Date().getTime()-\u startTime);
如果(时间>0){
ga(‘发送’、‘计时’、‘性能’、‘页面就绪’、‘时间’、‘桌面’);
}//如果
log('page ready:'+时间);
});
//轨道窗口加载时间
$(窗口).on('load',function(){
var time=(new Date().getTime()-\u startTime);
如果(时间>0){
ga(“发送”、“计时”、“性能”、“页面加载”、“时间”、“桌面”);
}//如果
log('页面加载:'+时间);
});
我正在Chrome上测试,并安装了扩展

我查看控制台,看到正在发送pageview和计时“page ready”命令,但计时“page load”命令从未发送

这两个
console.log()
都显示了正在触发的事件,但是没有为计时“页面加载”命令发送到Google Analytics的数据

以下是我所做的其他验证:

  • 时间值始终为整数
  • 我是否只有“页面加载”计时命令并不重要
以下是我在只有pageview和timings page load事件时得到的结果:

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

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

解决方案 启动跟踪器时设置采样率:

ga('create', 'UA-XXXX-Y', {'siteSpeedSampleRate': 50});
文档 字段参考:

功能描述:

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

你可以看看这个jsbin演示来证明。注意三次点击的发送方式:1次页面浏览和2次定时点击。

我觉得这是正确的。调试器对
ga('send','timing',…)
命令说了什么?它要么说成功,要么告诉你失败的是什么。你是不是等了24小时才让数据显示在标准报告中?@PhilipWalton我已经提出了这个问题来说明我从调试器中得到了什么。命令根本没有被触发,没有消息说它失败了,奇怪吧?@DaImTo 24小时后,我在报告中看到一些数据,但我有14000个文档事件准备就绪,900个页面加载事件(应该相等)。因此,该命令似乎针对某些用户启动,但我无法查看从浏览器发送的任何数据。我已经删除了documentready命令,现在只剩下pageload命令了。明天我将报告结果。好的,我尝试了新站点的采样率为50和100,现在我看到一个信号发送到GA。它似乎没有包含类别、变量名称、值和标签。下面是调试器显示内容的屏幕截图。我将等待,看看数据是否在计时报告中。这个完整的答案是不正确的
siteSpeedSampleRate
对发送定时没有影响。这只会影响点击analytics.js自动发送的站点速度。您愿意更新此答案吗?我为此花了几天时间(因为我不得不恢复使用正常事件而不是计时事件并重写我的仪表盘)好吧,我的代码周围有一个
(函数(w,d,$,ga){…})(窗口,文档,jQuery,ga)
,它不起作用。我删除了包装器函数,两个命令都被发送(不管siteSpeedSampleRate是什么)。我将更新问题以反映这一点。为了简化代码,我从问题中删除了b
ga('create', 'UA-XXXX-Y', {'siteSpeedSampleRate': 50});