analytics.js 的運作方式

使用 analytics.js 進行評估所需的大部分資訊都可以使用 ga() 指令佇列完成。本指南說明指令佇列的定義、運作方式,以及如何執行指令來評估使用者互動。

ga 指令佇列

Google Analytics (分析) 代碼定義了名為「指令佇列」的 ga 全域函式,之所以稱為指令佇列,是因為系統不會立即執行收到的指令,而是將指令加入佇列中,將執行延遲直到 analytics.js 程式庫完全載入為止。

在 JavaScript 中,函式也是物件,也就是說,函式可以包含屬性。Google Analytics (分析) 代碼會將 ga 函式物件上的 q 屬性定義為空白陣列。在載入 analytics.js 程式庫之前,呼叫 ga() 函式會將傳遞至 ga() 函式的引數清單附加至 q 陣列的結尾。

舉例來說,如果您正在執行 Google Analytics (分析) 代碼,然後立即將 ga.q 的內容記錄到控制台,就會看到一組長度為兩個項目的陣列,其中包含傳遞至 ga() 函式的兩組引數:

console.log(ga.q);

// Outputs the following:
// [
//   ['create', 'UA-XXXXX-Y', 'auto'],
//   ['send', 'pageview']
// ]

載入 analytics.js 程式庫後,系統會檢查 ga.q 陣列的內容,並依序執行各項指令。之後,系統會重新定義 ga() 函式,因此所有後續呼叫會立即執行。

這個模式可讓開發人員使用 ga() 指令佇列,不必擔心 analytics.js 程式庫是否已載入完成。它提供簡潔的同步介面,可省去大多數的非同步程式碼的複雜性。

將指令加入佇列

所有對 ga() 指令佇列的呼叫都會共用相同的簽名。第一個參數「指令」是識別特定 analytics.js 方法的字串。任何其他參數是指傳送到該方法的引數。

特定指令所參照的方法可以是全域方法,例如 createga 物件上的方法,也可以是追蹤程式物件中的例項方法,例如 send。如果 ga() 指令佇列收到無法辨識的指令,則只會忽略該指令,對 ga() 函式發出呼叫非常安全,因為這類指令幾乎絕對不會導致錯誤。

如需可透過指令佇列執行的所有指令完整清單,請參閱 ga() 指令佇列參考資料

指令參數

大多數的 analytics.js 指令 (及其對應的方法) 可接受多種不同格式的參數。這是為了方便起見,將常用欄位傳遞至特定方法。

以 Google Analytics (分析) 代碼中的兩個指令為例:

ga('create', 'UA-XXXXX-Y', 'auto');
ga('send', 'pageview');

在第一個指令中,create 接受 trackingIdcookieDomainname 欄位,並可選擇分別指定為第二、第三和第四個參數。send 指令接受選用的 hitType 第二個參數。

所有指令都會接受最終的 fieldsObject 參數,可用於指定任何欄位。舉例來說,代碼中的上述兩個指令可改寫為:

ga('create', {
  trackingId: 'UA-XXXXX-Y',
  cookieDomain: 'auto'
});
ga('send', {
  hitType: 'pageview'
});

如需各個指令允許使用的選用參數完整清單,請參閱 ga() 指令佇列參考資料

後續步驟

閱讀本指南後,您應該已充分瞭解如何使用 analytics.js 執行指令,以及指令佇列的運作方式。下一份指南會說明如何建立追蹤器物件