【发布时间】: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