编程语言
首页 > 编程语言> > javascript – 为什么Google Analytics事件不是从onSubmit发送的?

javascript – 为什么Google Analytics事件不是从onSubmit发送的?

作者:互联网

我想跟踪用户使用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

只有在提交表单之前推送的事件才会发生这种情况.事件在我的网站上的其他地方工作 – 包括在表单信息不好时推送的Form事件(在上面的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似乎没有任何效果 – 除了在提交表单之前添加暂停.

你有解决方案或建议吗?

解决方法:

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

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

标签:javascript,form-submit,forms,google-analytics
来源: https://codeday.me/bug/20190626/1297290.html