在所有我的网站页面上,我在关闭头标记之前设置了如下的谷歌分析异步代码....
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXXX-X']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script');
ga.type = 'text/javascript';
ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(ga, s);
})();</script>
然后在我的结帐页面上,我尝试使用事件跟踪来报告用户在各个页面上花费的时间,作为Google Analytics事件的价值。
我这样做是通过使用jQuery.ready函数记录'开始'时间并将事件处理程序添加到提交按钮,使用户进入结帐的下一步。此代码位于外部文件common.js中,如下所示......
$(document).ready(function() {
recordStartTime();
if ($("#checkoutPage1").length)
{
if ($("#customerDetailsForm").length)
{
// Time spent
$('.customerDetailsSubmitButton').click(function() {
time = durationWholeSeconds();
_gaq.push(['_trackEvent', 'Checkout', 'Timing', 'CustomerDetailsPage', time]);
return true;
});
}
}
我在jQuery.ready,#checkoutPage1,#checkoutPage2,#checkoutPage3等的其他步骤中有类似的代码部分。
当我在浏览器(Chrome)上测试此代码时,所有代码都按预期工作,并使用ga.debug插件,我可以看到_trackEvent参数被发送到谷歌分析。
我的问题似乎是,这似乎并不总是在野外工作。在我的现场网站上,我看到间歇性事件即将发生。鉴于我非常准确地知道有多少'销售'我在GA中应该预期的事件不匹配。结帐步骤中的后一些事件通常会报告没有记录之前的事件。
我的问题基本上是否可以使用jQuery.ready函数在需要的地方添加事件处理程序和跟踪代码?我还没有发现另一个问题吗?
答案 0 :(得分:2)
你可以使用jQuery.ready,但你必须记住,有时jQuery.ready
不会触发。有时用户会在DOM准备好之前离开。
您未发布功能recordStartTime
和durationWholeSeconds
。如果他们出于某种原因在浏览器上引发异常,那么该会话将不会触发事件。也许你应该确保它们被try catch块屏蔽,即使它们失败也会触发事件。
我还建议您使用$('.customerDetailsSubmitButton').mousedown
代替click
。 mousedown
首先发射,此时的时机至关重要。如果浏览器在事件发生之前重定向,则有可能会取消并且永远不会达到GA。在使用mousedown的tests中,我们看到的匹配数几乎是使用点击次数的两倍。