1

在我的所有网站页面上,我在结束 head 标记之前都有如下的谷歌分析异步代码设置......

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

然后在我的结帐页面上,我尝试使用事件跟踪来报告用户在各个页面上花费的时间作为谷歌分析事件的价值。

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

4

1 回答 1

2

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

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

我还建议您使用$('.customerDetailsSubmitButton').mousedown而不是click. mousedown首先开火,这里的时机很重要。如果浏览器在事件通过之前重定向,则它有可能被取消并且永远不会到达 GA。在我们使用 mousedown 的测试中,我们看到的点击次数几乎是使用 click 的两倍。

于 2012-08-26T21:43:06.937 回答