ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2019-06-26 20:24:56  阅读:247  来源: 互联网

标签:javascript form-submit forms google-analytics


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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有