我想跟踪用户使用 Analytics 事件下载文件的频率,但即使事件似乎已发送,跟踪 .gif 似乎也没有正确到达。
要下载文件,用户需要填写一个简短的表格。输入此表单的信息由函数 checkSubmit()
检查(当输入的信息无效或不完整时返回 false
,当输入的信息无效或不完整时返回 true
信息很好,可以提交)。提交后,用户将被重定向到该文件。
<script>
function checkSubmit() {
…
if(dataIsGood) {
_gaq.push(['_trackEvent', 'Download', 'the_filename.xxx']);
return true; //allow the form to submit
} else {
_gaq.push(['_trackEvent', 'Form', 'info not okay']);
return false; //keep the form from being submitted
}
}
</script>
<form action="/form/emailcaptureform" method="post" onSubmit="return checkSubmit();">
… </form>
在 Chrome 控制台中,Google Analytics Tracking Debugger显示已发送下载事件跟踪信标,但控制台显示它无法加载资源 __utm.gif
这种情况仅在提交表单之前推送的事件。 事件在我网站的其他地方工作——包括当表单信息不正确时推送的表单事件(在上面的 else
block 中)
Analytics snippet似乎在工作,接受 _trackPageview
和 _trackEvent
。
__utm.gif 的请求 URL 格式正确:将 gadebug 输出中的 URL 复制并粘贴到地址栏中会顺利返回 __utm.gif。
当从另一个元素推送时,事件被毫无问题地推送。例如:
<a href="#" onClick="_gaq.push(['_trackEvent', 'Download', the_filename.xxx']);">Event!</a>
推送事件,暂停几秒钟,然后返回 true
似乎没有任何效果 — 除了在提交表单之前添加暂停之外。
您有解决方案或建议吗?
最佳答案
Javascript 是单线程的。当您执行 _gaq.push
时,您正在将某些内容推送到队列中以供稍后处理。但是,您的代码在“稍后”到来之前返回 true
,并且 GA 代码永远不会执行(因为下一个操作是转到下一页)。
我建议现在可能是对 ._trackEvent
使用传统或同步跟踪的合适时机。
关于javascript - 为什么不从 onSubmit 发送 Google Analytics 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4939090/