2012-03-02 32 views

回答

18

编辑:请注意,这不再是这种情况。见下面的评论。

Defunkts jQuery的pjax实际上默认处理这件事情(对谷歌分析至少)。基本上,无论何时调用pjax页面加载,它都会告诉gaq对象记录新页面。

它采用这样做的代码如下所示:

// Google Analytics support 
if ((options.replace || options.push) && window._gaq) 
_gaq.push(['_trackPageview']) 
+8

[this commit]不再是这样(https://github.com/defunkt/jquery-pjax/commit/d1ed57262a1ada5fdeeafc56b6df1b54029c5acc)。现在您需要使用事件来自己处理跟踪。有关如何使用YUI执行此操作的示例可以在此处找到(http://yuilibrary.com/yui/docs/pjax/#adding-analytics-support),并且可以作为如何实施它的指导与jquery-pjax。 – 2013-04-16 21:28:13

2

阅读本http://code.google.com/apis/analytics/docs/tracking/asyncTracking.htmlhttp://code.google.com/apis/analytics/docs/tracking/asyncMigrationExamples.html

谷歌分析_trackPageview是对的ga.js使用功能跟踪网站,可以让你追踪网站上的事件,却不会产生综合浏览量。使用_trackPageview JavaScript,您可以指定特定页文件名给Flash事件,JavaScript事件,文件下载,出站链接,更多的,像这样的_gaq.push(['_trackPageview', '/home/landingPage']);

在你只需要告诉GA的“网址”成功的Ajax请求这一页'。

+0

谢谢,我会看看! – chopi321 2012-03-11 20:27:21

+1

就像上面一样,尽管上面的代码是正确的,但“jquery-pjax”脚本已经包含了用于更新Google分析的代码。将自己的呼叫也可能以页面记录两次结束。 – Carl 2012-03-19 13:34:09

39

接受的答案是不再有效,因为鲁伊·迪亚兹评论说,这是从PJAX in this commit删除。

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

的pjax:使用结束事件,因为它是触发这两个“一旦在一个pjaxed链接”(从服务器加载)和“前进/后退导航”(装载从高速缓存)。见pjax events documentation

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

或者使用旧版本的GA

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

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

+2

这适用于新版本。谢谢!! – joehand 2013-09-06 01:54:54

+0

Perrrrfect!谢谢! – Brainfeeder 2013-11-26 20:26:34

+0

应该可能使用'pjax:end',否则只有首页加载被跟踪。 – 2014-05-07 14:22:44

1

我用PJAX比整个多页面加载和每个页面加载居然能产生几个PJAX请求。

为了在现场安全工作,我提出一个事件URL的变化,只有当。这不会捕获刷新,但它比发送每页加载3x +点击更好。

href = window.location.href; 

if (window.LAST_GOOGLE_ANALYTICS_LOCATION !== href) { 
    window.LAST_GOOGLE_ANALYTICS_LOCATION = href; 
    ga('set', 'location', href); 
    ga('send', 'pageview'); 
    console.log("Analytics: sending hit, this is a new url: " + href); 
} else { 
    console.log("Analytics: not sending hit; same url as before: " + href); 
} 
1

@andrewtweber的答案几乎是正确的,但pjax:complete页面加载后才能触发,而不是恢复页面(例如使用后退按钮导航)。

因此应该使用的事件是pjax:end

$(document).on('pjax:end', function() { 
    ga('send', 'pageview', window.location.href); 
}); 

或者使用谷歌Analytics(分析)的旧版本时:

$(document).on('pjax:end', function() { 
    _gaq.push(['_trackPageview', window.location.href]); 
}); 
0

位置。href没有为我工作,我正在使用:

ga('send', 'pageview', location.pathname + location.search + location.hash);