2012-03-02 63 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);