更新:考虑到确保脚本不会缓存事件,到目前为止搜索还不顺利。
我使用下面的脚本来跟踪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>
答案 0 :(得分:1)
你的脚本创建一个数组的数组,其阈值范围从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插件非常好,您应该能够根据自己的需要进行调整(比重写自己的更容易)。