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

Tracking a download button click with Analytics using events

本文关键字:按钮 下载 事件 跟踪      更新时间:2023-09-26

我正在跟踪下载按钮点击一个网站上有我的一个项目与此代码:

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>

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

这也适用于外部链接跟踪,没有区别。

现在我的问题。我可以确保在用户重定向之前"处理"分析事件吗?如果没有,重定向会导致事件丢失吗?当前事件正在被跟踪,但我不能确定所有都是。

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

_gaq.push(function() { document.location = link.href; });

但不清楚这是否有效,或者它是否只是等同于前一个。实际上,这里的据说"调用_gaq。推动[….

您可以将函数推送到分析队列中,这是正确的。由于函数或跟踪事件的执行/求值顺序与您将它们放入数组的顺序一致,因此您应该能够这样做:

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

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

你问:

但不清楚这是否有效,或者它是否只是等同于前一个。

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

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