使用Google Analytics跟踪AJAX请求
我正在改变网站的一大部分,以使用jQuery Address’深度链接AJAXfunction。 我正在使用像mysite.com/#!/page1/subpage/
等URI。
我已经阅读了一些关于使用_gaq.push()
函数跟踪流量的信息,但我想知道是否有可能以更传统的方式进行…
每个AJAX请求都调用一个PHP函数,该函数构建一个页面并将其返回到包装器中,这样我就可以轻松定义自定义页面标题等等。
如果我将分析代码放在该页面上,jQuery调用该页面会触发它来跟踪访问吗?
那么你可以使用jQuery的AJAX事件来全局监听AJAX请求,然后将索引推送到_gaq
数组(这似乎是最易维护的方法):
$(document).on('ajaxComplete', function (event, request, settings) { _gaq.push(['_trackPageview', settings.url]); });
请注意, .on()
在jQuery 1.7中是新的,在这种情况下与.bind()
相同。
另请注意,我还没有测试为全局AJAX事件传递的参数的内容。
UPDATE
您还可以使用$.globalEval()
来解析在AJAX响应主体中加载的脚本: http : $.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()); }
来源: jQuery – HTML中的脚本标记由jQuery解析而不执行
其他答案已过时(截至2013年) – Google建议使用新的通用分析
您可以像这样异步跟踪页面视图:
ga('send', 'pageview', '/my-page');
请参阅: https : //developers.google.com/analytics/devguides/collection/analyticsjs/pages#overriding
我使用的系统涉及将html作为纯文本请求,首先解析html以将所有脚本标签更改为div,分离这些div,附加页面,然后遍历div(实际上是脚本)并将其内容附加到脚本使用该div上的src标记或创建脚本标记。 它与history.js框架示例的工作方式非常相似。
$.get(urlToLoad).promise().done(function(html) { var outHTML = html; outHTML = outHTML.replace(/