jQuery pjax和谷歌分析

时间:2012-03-02 04:26:33

标签: javascript jquery google-analytics

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

6 个答案:

答案 0 :(得分:40)

接受的答案已不再有效,因为正如Ruy Diaz评论的那样,这已从PJAX in this commit中移除。

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

使用pjax:end事件是因为它在“跟随pjaxed链接”(从服务器加载)和“on back / forward navigation”(从缓存加载)时被触发。见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]);
    }
});

我不得不手动设置位置变量,因为它没有发现它已经改变了。

答案 1 :(得分:18)

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

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

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

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

答案 2 :(得分:2)

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

Google Analytics(分析)'_trackPageview是一种在ga.js跟踪网站上使用的功能,可让您跟踪网站上未生成综合浏览量的事件。使用_trackPageview JavaScript,您可以为Flash事件,JavaScript事件,文件下载,出站链接等分配特定的页面文件名,例如_gaq.push(['_trackPageview', '/home/landingPage']);

在成功的ajax请求中,您只需要告诉GA“页面”的“URL”。

答案 3 :(得分:1)

我使用PJAX而不是整个页面加载,每个页面加载实际上可以生成几个PJAX请求。

要安全地在网站上工作,我只会在网址更改时提交活动。这不会捕获刷新,但它比每页加载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);
}

答案 4 :(得分:1)

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

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

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

或者在使用旧版Google Analytics时:

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

答案 5 :(得分:0)

location.href对我不起作用,我正在使用:

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