0

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

在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 
+0

那么它不是一个答案,但我有一个类似的问题,只是发现这几分钟前,似乎帮助我:https://chrome.google.com/webstore/detail/google-analytics-debugger/jnkmfdileelhofjcijamephohjechhna/details – user1431083

+0

你有任何错误吗? – putvande

+0

我的js控制台没有错误。我会用GA调试器在控制台中返回的内容更新我的问题。 – xxyyxx

回答

0

是分配给u_id了一批other_id价值?如果opt_label参数是一个整数,jQuery .data()将尝试转换为Javascript值,并且_trackEvent可能会自动失败。

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

u_id = $('#outfitPair'+cid).attr('data-other_id'); 
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);