使用jquery中的事件处理程序进行Google Analytics异步事件跟踪

时间:2012-08-26 21:19:08

标签: google-analytics event-tracking

所有我的网站页面上,我在关闭头标记之前设置了如下的谷歌分析异步代码....

<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函数在需要的地方添加事件处理程序和跟踪代码?我还没有发现另一个问题吗?

1 个答案:

答案 0 :(得分:2)

你可以使用jQuery.ready,但你必须记住,有时jQuery.ready不会触发。有时用户会在DOM准备好之前离开。

您未发布功能recordStartTimedurationWholeSeconds。如果他们出于某种原因在浏览器上引发异常,那么该会话将不会触发事件。也许你应该确保它们被try catch块屏蔽,即使它们失败也会触发事件。

我还建议您使用$('.customerDetailsSubmitButton').mousedown代替clickmousedown首先发射,此时的时机至关重要。如果浏览器在事件发生之前重定向,则有可能会取消并且永远不会达到GA。在使用mousedown的tests中,我们看到的匹配数几乎是使用点击次数的两倍。