Google事件跟踪器未触发

时间:2013-08-07 14:56:17

标签: javascript jquery ruby-on-rails google-analytics event-tracking

我有一个事件跟踪器(位于main.js而不是内联点击处理程序),当用户点击具有特定类的项目时,该事件跟踪器应该触发。但是,我的客户报告说这些事件跟踪器从未触发,或者至少他从未看到过它们的响应。但是,整个网站上的其他GA事件跟踪器正在运行。任何人都可以看到下面我的代码有任何问题可能导致此问题吗?

main.js中处理此问题的js函数如下所示:

$('.vote.complete').click(function()
{
    whence = "toCompleted";
    vote_id = $(this).data('vote_id');
    cid = $(this).data('campaign_id');

    c_title = $('#outfitPair'+cid).data('campaign_title');
    u_id = $('#outfitPair'+cid).data('other_id');

    _gaq = window._gaq;

    if(_gaq != undefined){
      _gaq.push(['_trackEvent', 'ViewPreviousVote', c_title, u_id]);
    }

    $('#outfitPair'+cid).find('.button.vote').removeClass('to-vote');
    $(this).addClass('to-vote');

    $.get('/campaigns/new_pair?whence='+whence+'&vote_id='+vote_id)

    return false;
});

点击内容的html如下所示:

<a href="#" class="button vote complete" data-vote_id="9490" data-campaign_id="5">
   <span>01</span>
</a>

我的布局标题中的脚本:

<script>
var _gaq = _gaq || [];
      _gaq.push(['_setAccount', 'UA-XXXXXXXX-X']);
      _gaq.push(['_setDomainName', 'mywebsite.com']);
      _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);
      })();

      window._gaq = _gaq;
</script>

GA调试器在加载网页时在我的js控制台中返回此内容,但是当我尝试触发事件跟踪器时没有出现任何新内容:

Registered new plugin: "linker" analytics_debug.js:5
Creating new tracker: t0 analytics_debug.js:5

Sent beacon:
v=1&_v=j11d&a=XXXXXXXXX&t=pageview&_s=1&dl=http%3A%2F%2Fapp.website.com%2Fcampaigns%2Fvote&dr=&ul=en-us&de=UTF-8&dt=Website&sd=32-bit&sr=1366x768&vp=1349x667&je=1&fl=11.8%20r800&_u=MAC~&cid=XX.XX&tid=UA-XXXXXXX-X&z=812880404

 analytics_debug.js:5
adSenseId (&a):               XXXXXXXXXX analytics_debug.js:5
apiVersion (&v):              1 analytics_debug.js:5
clientId (&cid):              XXX.XXX analytics_debug.js:5
encoding (&de):               UTF-8 analytics_debug.js:5
flashVersion (&fl):           11.8 r800 analytics_debug.js:5
hitType (&t):                 pageview analytics_debug.js:5
javaEnabled (&je):            1 analytics_debug.js:5
language (&ul):               en-us analytics_debug.js:5
location (&dl):               http://app.website.com analytics_debug.js:5
referrer (&dr):                analytics_debug.js:5
screenColors (&sd):           32-bit analytics_debug.js:5
screenResolution (&sr):       1366x768 analytics_debug.js:5
title (&dt):                  Website analytics_debug.js:5
trackingId (&tid):            UA-XXXXXXXX-X analytics_debug.js:5
viewportSize (&vp):           1349x667 analytics_debug.js:5

2 个答案:

答案 0 :(得分:0)

other_id分配给u_id的数字是多少? jQuery .data()将尝试转换为Javascript值,如果_trackEvent参数是整数,opt_label可能会无提示失败。

您可以使用.attr()获取属性值而无需转换。尝试:

u_id = $('#outfitPair'+cid).attr('data-other_id');

答案 1 :(得分:0)

我知道这是一个老问题,但根据您的调试器输出,看起来有些东西需要新的“Universal Analytics”跟踪代码。我可以告诉,因为调试器输出显示“analytics_debug.js”而不是“ga_debug.js”。

您在标头中提供的脚本使用的是旧的异步语法。也许您在Google Analytics中创建了一个属性,并选择了Universal Analytics而不是Classic。如果是这样,您应该尝试升级到新代码:

<!-- Google Analytics -->
<script>
(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-XXXX-Y');
ga('send', 'pageview');

</script>
<!-- End Google Analytics -->

https://developers.google.com/analytics/devguides/collection/analyticsjs/

然后您的活动代码为ga('send', 'event', category, action, label, value);