是_gaq.push无法正常工作?

时间:2012-09-13 05:53:16

标签: javascript ajax google-analytics

我正试图通过谷歌分析来跟踪我的网页,这是我的代码

var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'XXXXXXXXXX']);
_gaq.push(['_setDomainName', 'somesite.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);
})();

(function ($) {     
    // Log all jQuery AJAX requests to Google Analytics
    $(document).bind('ajaxComplete', function(event, xhr, settings){ 
        console.log('ajax Request');
        console.log(settings.url);
        _gaq.push(['_trackPageview', settings.url]);
    });

})(jQuery);

在每个ajax请求中,我都可以看到控制台有值

ajax Request
url of the page

这意味着_gap.push正在工作(因为页面上没有js错误)。但是,当我通过Live HttpHeaders检查我的req / res时,没有针对谷歌分析的req / res,如何跟踪它?

这是firebug中的截图 enter image description here

4 个答案:

答案 0 :(得分:3)

_gaq.push中的一点是,在实际加载Google Analytics之前,“_ gaq”只是一个普通数组。也就是说:确实没有错误,无论它是否在触发对Google的请求方面“正常工作”。

Google Analytics的工作方式不是通过ajax(或者至少没有关于如何发送请求的具体实现细节)。通常使用的方法是创建一个Image元素,其中跟踪数据包含在该图像的URL的查询字符串中。毕竟,该页面并不关心Google Analytics的响应,它只是想发送数据然后去!

答案 1 :(得分:1)

我会检查开发人员工具的“网络”面板,而不是使用LiveHttpHeaders,如果你有Javascript控制台,你也可以访问它。您应该能够在该面板上查看请求的所有详细信息。

答案 2 :(得分:1)

您还可以使用ga.js的调试版本来诊断错误。它会将“无效的跟踪代码”等内容打印到Javascript控制台上。

在此页面上搜索“使用ga_debug.js进行调试”:

https://developers.google.com/analytics/resources/articles/gaTrackingTroubleshooting

答案 3 :(得分:0)

查看发送的http标头 - 我使用HttpFox - 并过滤'utm'。查看查询字符串(httpfox将其分解为一个表格),您可以看到命中的所有utm参数 - 帐号(utmac),页面(utmp)等。如果任何utm参数不熟悉,检查这个reference。这种对发送到谷歌服务器的图像请求的模拟和分析对于调试谷歌分析问题非常有用。