jQuery pjax和谷歌分析

cho*_*321 14 javascript jquery google-analytics

我正在使用PJAX https://github.com/defunkt/jquery-pjax,我想知道,因为整个页面没有改变用谷歌分析跟踪分析的最佳方式?

and*_*ber 41

接受的答案不再有效,因为正如Ruy Diaz评论的那样,这在本次提交中已从PJAX 删除.

这是我的解决方案.在pjax:end事件中,设置GA位置,并发送综合浏览量.

使用pjax:end事件是因为它在"跟随pjaxed链接"(从服务器加载)和"on back/forward navigation"(从缓存加载)时被触发.请参阅pjax事件文档

$(document).on('pjax:end', function() {
    ga('set', 'location', window.location.href);
    ga('send', 'pageview');
});
Run Code Online (Sandbox Code Playgroud)

或使用旧版GA

$(document).on('pjax:end', function() {
    if( window._gaq ) {
        _gaq.push(['_trackPageview', window.location.href]);
    }
});
Run Code Online (Sandbox Code Playgroud)

我不得不手动设置位置变量,因为它没有拿起它改变了.


Car*_*arl 17

编辑:请注意,现在不再是这样了.见下面的评论.

Defunkts jquery-pjax实际上会默认为您处理此问题(至少对谷歌分析而言).基本上每当调用pjax页面加载时,它都会告诉gaq对象记录新页面.

它用来执行此操作的代码如下所示:

// Google Analytics support
if ( (options.replace || options.push) && window._gaq )
_gaq.push(['_trackPageview'])
Run Code Online (Sandbox Code Playgroud)

  • 从[this commit]开始,这已不再适用(https://github.com/defunkt/jquery-pjax/commit/d1ed57262a1ada5fdeeafc56b6df1b54029c5acc).现在您需要使用事件来自己处理跟踪.关于如何使用YUI执行此操作的示例可以在[此处](http://yuilibrary.com/yui/docs/pjax/#adding-analytics-support)找到,并可以作为如何实现它的指南用jquery-pjax. (8认同)