簡體   English   中英

在GA中跟蹤滾動虛擬頁面視圖

[英]Tracking Scrolling Virtual Page Views in GA

更新:考慮到確保腳本不會緩存事件,搜索到目前為止還不順利。

我使用下面的腳本來跟蹤GA中的虛擬頁面視圖,該網站有一個很長的主頁我們正在跟蹤它。 我遇到的問題是,一旦用戶向下滾動到較低的部分,如果它們向上滾動(它使每頁最多1個視圖),它就不會注冊為新的頁面視圖。 任何有關這方面的幫助將不勝感激。 我正在使用jQuery,下面的腳本確實發送/跟蹤。

此腳本是在標記之前實現的Universal Analytics代碼的補充。 下面的第一個代碼是正常的Analytics代碼,正確運行調試器需要該代碼,因為這是定義帳戶的位置。 第二個腳本是我遇到問題的腳本。

普通UA腳本(位於head標簽中):

<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
  ga('create', 'UA-123456-1', 'auto');
  ga('require', 'displayfeatures');
  ga('send', 'pageview');
</script>

滾動虛擬頁面視圖的腳本:

<script language="javascript"> 

// Predefined variable 
Frequency = 10;    

//Tracking and Sending
_frequency = Frequency; 
_repetition = 100 / Frequency; 
var _scrollMatrix = new Array(); 
for (ix = 0; ix < _repetition; ix++) {
    _scrollMatrix[ix] = [_frequency, 'false'];
    _frequency = Frequency + _frequency; 
} 
$(document).scroll(function (e) {
    for (iz = 0; iz < _scrollMatrix.length; iz++) {
        if (($(window).scrollTop() + $(window).height() >=      $(document).height() 
* _scrollMatrix[iz][0] / 100)  && (_scrollMatrix[iz][1]== 'false')) {
            _scrollMatrix[iz][1] = 'true';
            ga('send', 'pageview', _scrollMatrix[iz][0]+'%' );
        }
    }
 });

</script>

這就是它目前在Google Analytics中的顯示方式

你的腳本創建了一個數組的數組,其閾值范圍從10到100作為索引,由“悔改”變量決定(這並不意味着你認為它意味着什么;你的意思是“重復”,除非你真的很抱歉寫作這個腳本)。 如果數組的數組是布爾“false”,則每個元素的值之一。

此布爾值在document.scroll函數內的循環中計算。 如果值為“false”,則執行頁面視圖,並將變量設置為“true”。 發生在這一點:

if (($(window).scrollTop() + $(window).height() >=      $(document).height() 
* _scrollMatrix[iz][0] / 100)  && (_scrollMatrix[iz][1]== 'false')) {
            _scrollMatrix[iz][1] = 'true';

這意味着下一次_scrollMatrix[iz][1]的布爾值為“true”,並且不再執行if分支。

如果您要激活Google Analytics代碼,則無論您是否可以刪除布爾值以及評估它的部分。 所以你的腳本看起來像這樣:

<script language="javascript"> 

// Predefined variable 
Frequency = 10;    

//Tracking and Sending
_frequency = Frequency; 
_repentance = 100 / Frequency; 
var _scrollMatrix = new Array(); 
for (ix = 0; ix < _repentance; ix++) {
    _scrollMatrix[ix] = [_frequency];
    _frequency = Frequency + _frequency; 
} 
$(document).scroll(function (e) {
    for (iz = 0; iz < _scrollMatrix.length; iz++) {
        if (($(window).scrollTop() + $(window).height() >=      $(document).height() * _scrollMatrix[iz][0] / 100)  ) {
            ga('send', 'pageview', _scrollMatrix[iz][0]+'%' );
        }
    }
 });

</script>

當你說腳本正在跟蹤時,我必須指出生成的GA代碼實際上是錯誤的。 您的跟蹤調用如下所示:

ga("send", "pageview", "10%")
ga("send", "pageview", "20%")
...

你不能簡單地將裸百分比作為該函數的參數,並希望它被記錄到某個地方( 編輯 oops,我的壞。當然第三個參數作為虛擬頁面名稱,所以如果你想要百分比作為頁面名稱,這一點是正常的)。

由於您的腳本在每個滾動事件上執行循環,它實際上發送了幾十個ga調用,並且計算的百分比與用戶的實際滾動位置無關(它只是為每個滾動事件發送10-100%的所有值)。 加上每個滾動事件的循環使得瀏覽器資源方面的代價非常昂貴。 當然,你有每秒點擊量和每次點擊次數,你的腳本會很快達到這些配額。

我坦率地建議您放棄腳本並使用現有的測試解決方案之一。 jQuery scrollDepth插件非常好用,你應該能夠根據你的需要進行調整(比重寫你自己的更容易)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM