【问题标题】:Why is Google Analytics event not sent from onSubmit?为什么 onSubmit 没有发送 Google Analytics 事件?
【发布时间】:2011-06-23 18:29:27
【问题描述】:

我想跟踪用户使用 Google 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 块中)

Analytics snippet 似乎正在工作,接受 _trackPageviews 和 _trackEvents。

__utm.gif 的请求 URL 格式正确:将 gadebug 输出中的 URL 复制并粘贴到位置栏中会顺利返回 __utm.gif。

当从另一个元素推送时,该事件被推送而没有问题。例如:

<a href="#" onClick="_gaq.push(['_trackEvent', 'Download', the_filename.xxx']);">Event!</a>

推送事件,暂停几秒钟,然后返回true 似乎没有任何效果——除了在提交表单之前添加一个暂停。

您有解决方案或建议吗?

【问题讨论】:

  • 似乎在
    提交和 Analytics 处理事件之间存在冲突:事件未注册,因为它需要发出成功的 GET 请求,并且此 GET 请求被 的 POST 请求。知道如何解决这个冲突吗?
  • 解决这种请求冲突的方法是 1) 异步提交表单数据或 2) 中断表单上的提交事件,保持它直到处理完 GA 事件,然后有 GA允许提交表单。

标签: javascript forms google-analytics form-submit


【解决方案1】:

Javascript 是单线程的。当您执行_gaq.push 时,您正在将某些内容推送到队列中以供稍后处理。但是,您的代码在“稍后”到来之前返回 true,并且 GA 代码永远不会执行(因为下一个操作是转到下一页)。

我建议这可能是使用 ._trackEvent 的传统或同步跟踪的合适时机

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-10
    • 2020-09-24
    相关资源
    最近更新 更多