2016-04-22 100 views
0

我正在使用analytics.js。不過,我不會加載Google Analytics與analytics.js腳本,因爲我正在等待一些數據首先進入。檢查Google Analytics是否已加載,並調用ga('create',...)

因此,我稍後在某個時間點撥打ga('create', googleKey, 'auto');。這個腳本應該始終執行,但我想100%確定。因此,我想在我的控制器中調用該函數,但僅限於以前未調用該函數。

因此,如何確保它之前已被調用並執行?

我以爲window.GoogleAnalyticsObject幫助我在這裏。但是,它似乎只是告訴我ga正在使用中,而不是恰好在它被加載和加載時。

有什麼解決辦法嗎?

回答

0

最好的解決方案是檢查像素請求。創建一個遞歸函數或一個間隔函數。該請求是一個簡單的IMG與此基礎:https://www.google-analytics.com/collect

e.g

 function checkAnalyticsPixel(){ 
     var analyticsPixel = false; 
     var imgs = document.getElementsByTagName('img'); 

     for(var i = 0; i < imgs.length; i++){ 
      var img = imgs[i]; 

      if(!!img.src.match("google-analytics.com/collect")){ 
       analyticsPixel = true;  
      } 
     } 

     if(!analyticsPixel){ 
      setTimeout(checkAnalyticsPixel, 1000); 
     }else{ 
      return true;  
     } 
    } 

    checkAnalyticsPixel(); 

這也是添加計數器日誌記錄是個好主意。您還可以搜索請求中的其他特徵。綜合瀏覽量請求如下所示:

https://www.google-analytics.com/collect?v=1&_v=j41&a=707797589&t=pageview&_s=1&dl=[URL]&ul=en-us&de=UTF-8&dt=[PAGETITLE]&sd=24-bit&sr=1920x1080&vp=1296x992&je=0&fl=21.0%20r0&_u=QCCAgAAB~&jid=1841853851&cid=253920917.1460537916&tid=UA-39805455-4&gtm=[GTMID]&cg1=beauty&z=1871236975

編輯:Analytics(分析)刪除像素。您可以覆蓋appendChild。這不是一個非常好的解決方案,但它可以工作。重寫必須是腳本中的第一個。

var appendChildPrototype = Element.prototype.appendChild; 
Element.prototype.appendChild = function(){ 
    appendChildPrototype.apply(this, arguments); 
    for(var i = 0; i < arguments.length; i++){ 
     var element = arguments[i]; 
     if(element.nodeName == "IMG" && element.src.match("google-analytics.com/collect")){ 
      console.log("ANALYTICS!"); 
     } 
    } 
}; 
+0

像素檢查如何準確告訴我分析是否完全加載。我只集成了你的代碼片段。它似乎沒有告訴我我需要知道什麼? – Dribel

+0

我測試了這個解決方案。由於谷歌刪除插入的像素不起作用。這真的很糟糕。 –

+0

編輯我的帖子。 –

相關問題