跟踪下载按钮,点击使用事件分析

lor*_*o-s 7 javascript tracking google-analytics

我正在跟踪" 下载"按钮,点击具有此项代码的我的项目的网站:

function trackDownload(link) {
    try {
        _gaq.push(['_trackEvent', 'Downloads', 'Click', 'Setup executable']);
        setTimeout('document.location = "' + link.href + '"', 100);
    } catch (err) {}
    return false;
}
Run Code Online (Sandbox Code Playgroud)

按钮是这样的:

<a href="files/setup.exe" onclick="return trackDownload(this);">Download</a>
Run Code Online (Sandbox Code Playgroud)

因此,当用户单击它时,会将事件推送到Google Analytics,然后将用户重定向到该文件.

这也适用于外部链接跟踪,没有差异.

现在我的问题.我可以确定在用户重定向之前"处理"了Google Analytics事件吗?如果没有,那重定向会导致事件丢失?目前,事件正在被跟踪,但我不能肯定所有的人都.

我读过我也可以尝试一些不同的东西,将重定向功能推送到Analytics队列:

_gaq.push(function() { document.location = link.href; });
Run Code Online (Sandbox Code Playgroud)

但目前尚不清楚这是否有效,或者它是否与前一个相同.事实上,这里"调用_gaq.push [...]执行命令".

Tim*_*nes 7

您是正确的,因为您可以将功能推送到分析队列.由于函数或跟踪事件按照将它们推送到数组的顺序执行/评估,因此您应该能够执行此操作:

function trackDownload(link) {
    _gaq.push(['_trackEvent', 'Downloads', 'Click', 'Setup executable']);
    _gaq.push(function() { document.location = link.href });
    return false;
}
Run Code Online (Sandbox Code Playgroud)

请注意,try/catch不是必需的,因为push()没有记录任何东西(我建议删除它,因为空的catch块可以掩盖其他问题).

你问:

但目前尚不清楚这是否有效,或者它是否与前一个相同.

在您的第一个示例(push,setTimeout)中,如果您在执行重定向时尚未完成加载(因为那时_gaq只是一个数组),事件将会丢失.在带有的版本中push(function...,无论在用户点击下载按钮时是否已完成加载,都会在重定向之前记录事件.出于这个原因,我建议使用push(function....

请注意,push(function...版本将在重定向发生之前等待分析完成加载(这听起来像你想要的那样),但是你可能想要添加一种方法来处理分析无法加载的情况.