【问题标题】:Google Analytics Async Event Tracking with event handlers in jquery使用 jquery 中的事件处理程序进行 Google Analytics 异步事件跟踪
【发布时间】:2012-08-21 11:16:07
【问题描述】:

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

【问题讨论】:

    标签: google-analytics event-tracking


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢。我想你可能已经引导我解决了这个问题。在我的durationWholeSeconds 中,我一直在将持续时间记录到控制台,就像在console.log(d); 中一样,但是我认为我说并非所有浏览器都支持这一点是正确的,所以我假设在这些情况下会引发异常并且事件不会被触发。我还将尝试. mousedown。如果在此之后我仍然遇到问题,我会再次发布。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多