使用Google Analytics跟踪AJAX请求

jdp*_*jdp 5 ajax jquery google-analytics jquery-address

我正在改变网站的一大部分,以使用jQuery Address'深度链接AJAX功能.我正在使用URI之类的东西mysite.com/#!/page1/subpage/.

我已经阅读了关于使用该_gaq.push()功能跟踪流量的一些信息,但我想知道是否有可能以更传统的方式进行...

每个AJAX请求调用一个PHP函数,该函数构建一个页面并将其返回到<HTML>包装器中,这样我就可以轻松定义自定义页面标题等等.

如果我将分析代码放在该页面上,jQuery调用该页面会触发它来跟踪访问吗?

Jas*_*per 15

那么你可以使用jQuery的AJAX事件来全局监听AJAX请求,然后将索引推送到_gaq数组(这似乎是最易维护的方法):

$(document).on('ajaxComplete', function (event, request, settings) {
    _gaq.push(['_trackPageview', settings.url]);
});
Run Code Online (Sandbox Code Playgroud)

请注意,这.on()是jQuery 1.7中的新增内容,与.bind()本例中的内容相同.

另请注意,我还没有测试为全局AJAX事件传递的参数的内容.

UPDATE

您还可以使用$.globalEval()来解析在AJAX响应主体中加载的脚本:http://api.jquery.com/jquery.globalEval/

success: function(data) {

    var dom = $(data);

    dom.filter('script').each(function(){
        $.globalEval(this.text || this.textContent || this.innerHTML || '');
    });

    $('#mydiv').html(dom.find('#something').html());

}
Run Code Online (Sandbox Code Playgroud)

来源:jQuery - HTML中的脚本标记由jQuery解析而不执行


Yar*_*rin 5

其他答案已过时(截至2013年) - Google建议使用新的通用分析

您可以像这样异步跟踪页面视图:

ga('send', 'pageview', '/my-page');
Run Code Online (Sandbox Code Playgroud)

请参阅:https://developers.google.com/analytics/devguides/collection/analyticsjs/pages#overriding