在 GA 中跟踪滚动虚拟页面浏览量
Tracking Scrolling Virtual Page Views in GA
更新:正在研究确保脚本不缓存事件,到目前为止搜索并不顺利。
我正在使用下面的脚本来跟踪 GA 中的虚拟页面浏览量,该网站有一个很长的主页,我们正在跟踪它。我遇到的问题是,一旦用户向下滚动到较低的部分,如果他们向上滚动,它就不会注册为新的页面视图(每页最多 1 个视图)。对此的任何帮助将不胜感激。我正在使用 jQuery 并且下面的脚本执行 send/track.
此脚本是对在代码之前实施的 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 作为索引,由 "repentance" 变量确定(这并不意味着您认为的意思;您的意思是 "repetitions",除非你真的很抱歉写了这个脚本)。如果数组的数组是布尔值 "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%")
...
你不能简单地将裸百分比作为该函数的参数并希望它被记录在某个地方(编辑哎呀,我的错。当然第三个参数作为虚拟页面名,所以如果你想将百分比作为页面名,那位就可以了。
由于您的脚本在每个滚动事件上执行循环,它实际上发送了数十次 ga 调用,并且计算的百分比与用户的实际滚动位置无关(它只是发送 10-100% 的所有值每个滚动事件)。加上在每个滚动事件上循环使得这在浏览器资源方面非常昂贵。当然,您有每秒点击次数和每次会话点击次数的配额,您的脚本将很快达到这些配额。
我坦率地建议您放弃脚本并使用现有的测试解决方案之一。 jQuery scrollDepth 插件非常好,您应该能够根据自己的需要调整它(比自己重写更容易)。
更新:正在研究确保脚本不缓存事件,到目前为止搜索并不顺利。
我正在使用下面的脚本来跟踪 GA 中的虚拟页面浏览量,该网站有一个很长的主页,我们正在跟踪它。我遇到的问题是,一旦用户向下滚动到较低的部分,如果他们向上滚动,它就不会注册为新的页面视图(每页最多 1 个视图)。对此的任何帮助将不胜感激。我正在使用 jQuery 并且下面的脚本执行 send/track.
此脚本是对在代码之前实施的 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 作为索引,由 "repentance" 变量确定(这并不意味着您认为的意思;您的意思是 "repetitions",除非你真的很抱歉写了这个脚本)。如果数组的数组是布尔值 "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%")
...
你不能简单地将裸百分比作为该函数的参数并希望它被记录在某个地方(编辑哎呀,我的错。当然第三个参数作为虚拟页面名,所以如果你想将百分比作为页面名,那位就可以了。
由于您的脚本在每个滚动事件上执行循环,它实际上发送了数十次 ga 调用,并且计算的百分比与用户的实际滚动位置无关(它只是发送 10-100% 的所有值每个滚动事件)。加上在每个滚动事件上循环使得这在浏览器资源方面非常昂贵。当然,您有每秒点击次数和每次会话点击次数的配额,您的脚本将很快达到这些配额。
我坦率地建议您放弃脚本并使用现有的测试解决方案之一。 jQuery scrollDepth 插件非常好,您应该能够根据自己的需要调整它(比自己重写更容易)。