[英]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>
你的腳本創建了一個數組的數組,其閾值范圍從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.