2015-08-28 155 views
1

我試圖在着陸頁上使用Google Analytics事件跟蹤。我在頁面的兩個地方獲得了代碼,附加到兩個元素上,跟蹤這些元素的點擊次數。按鈕上的Google Analytics事件跟蹤

在一個點 - 一個彈出式的燈箱視頻 - 跟蹤完美。它立即在GA中提取。

但是,在頁面上的其他位置(更重要的位置)上,我似乎無法在GA中找到它。代碼以完全相同的方式實施,並且在Chrome中使用Google Analytics調試器,兩者似乎都在點擊完全相同的信息。

在一個實例中,代碼位於元素中的另一箇中。

我附上了以下兩段代碼。

任何幫助都將非常感激。

工作的代碼:

<a class="button" href="http://player.vimeo.com/video/134791294?autoplay=1" target="_blank" id="fancybox-video2" data-fancybox-type="iframe" class="fancybox.iframe" onclick="ga('send','event','played-video','clicked-play','button');">Watch the video</a>

不正確的代碼:

<button type="submit" onclick="ga('send','event','Signed-Up','clicked-button','Free-Trial-14-Days');">Get Started</button>

+0

您能夠發佈(或PM我)與按鈕的網站? – nyuen

回答

0

最可能發生的事情是<button>示例正在提交表單,該表單正在通知瀏覽器導航到新頁面,因此現有頁面正在卸載。通常,瀏覽器在頁面開始卸載後將停止執行JavaScript,因此您的ga('send', ...)點擊處理程序永遠不會結束。

解決方法是攔截submit事件,進行ga('send', ...)調用,然後在發送呼叫的hitCallback中重新觸發提交。

更新:當使用hitCallback作爲表單提交等基本功能時,處理點擊未能發送的情況很重要。你可以用這個setTimeout來完成,它的超時被調用成功的hitCallback清除。

0

正如菲利普提到的,您可能需要等待事件觸發Google Analytics(如果您在Chrome網絡標籤中保留日誌,則應該看到它失敗)。作爲使用hitCallback的替代方法(如果Google結束時出現錯誤/延遲,可能會導致鏈接失效)是使用setTimeout。

簡單的jQuery例如

$(document).ready(function() { 

    // Note: be more specific! 
    $("button").each(function() { 
     var href = $(this).attr("href"); 
     var target = $(this).attr("target"); 

     $(this).click(function(e) { 
      e.preventDefault(); 
      ga('send','event','Signed-Up','clicked-button','Free-Trial-14-Days'); 
      setTimeout(function() { // Wait 300ms for tag to send to GA 
       window.open(href,(!target?"_self":target)); 
      },300); 
     }); 
    }); 

}); 
+0

使用'setTimeout'並不是一個非常可靠的解決方案,儘管@williamvicary確實提供了一個很好的觀點,即您需要處理(儘管不太可能)情況,即失敗。使用'setTimeout'和'hitCallback'的組合可以實現這一點。 –

相關問題