我正在跟踪下载按钮,点击我的项目网站,其中包含以下代码:
function trackDownload(link) {
try {
_gaq.push(['_trackEvent', 'Downloads', 'Click', 'Setup executable']);
setTimeout('document.location = "' + link.href + '"', 100);
} catch (err) {}
return false;
}
按钮就是:
<a href="files/setup.exe" onclick="return trackDownload(this);">Download</a>
因此,当用户点击它时,会将事件推送到Google Analytics,然后将用户重定向到该文件。
这也适用于外部链接跟踪,没有差异。
现在我的问题。 我可以确定在用户重定向之前“处理”了Google Analytics事件吗?如果没有,那重定向会导致事件丢失?目前正在跟踪事件,但我无法确定所有是否正确。
我读过我也可以尝试一些不同的东西,将重定向功能推送到Analytics队列:
_gaq.push(function() { document.location = link.href; });
但目前尚不清楚这是否有效,或者它是否与之前的相同。实际上, here 表示“对_gaq.push [...]的调用会在按下”时执行命令。
答案 0 :(得分:7)
你的意思是正确的push functions onto the analytics queue。由于函数或跟踪事件按照将它们推送到数组的顺序执行/评估,因此您应该能够执行此操作:
function trackDownload(link) {
_gaq.push(['_trackEvent', 'Downloads', 'Click', 'Setup executable']);
_gaq.push(function() { document.location = link.href });
return false;
}
请注意,try / catch不是必需的,因为push()
没有记录任何东西(我建议删除它,因为空的catch块可以mask other problems)。
你问:
但目前尚不清楚这是否有效,或者它是否与之前的相同。
在您的第一个示例(push,setTimeout)中,如果您在执行重定向时尚未完成加载,则事件将会丢失(因为那时_gaq
只是一个数组)。在具有push(function...
的版本中,无论在用户点击下载按钮时是否已完成加载,都会在重定向之前记录事件。出于这个原因,我建议使用push(function...
。
警告push(function...
版本会在重定向发生之前等待分析完成加载(这听起来像你想要的那样),但是你可能想要添加一种方法来处理分析没有的情况。 t load。