Javascript 提交表单时使用_trackEvent进行Google Analytics事件跟踪

Javascript 提交表单时使用_trackEvent进行Google Analytics事件跟踪,javascript,google-analytics,dom-events,event-tracking,Javascript,Google Analytics,Dom Events,Event Tracking,当用户单击我的注册表单上的提交按钮时,我正在尝试跟踪事件 我的页面中有以下代码: Google Analytics-在我结束前一刻标记: <script type="text/javascript"> var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-XXXXXXXX-XX']); _gaq.push(['_trackPageview']); (function() { var ga = docume

当用户单击我的注册表单上的提交按钮时,我正在尝试跟踪事件

我的页面中有以下代码:

Google Analytics-在我结束前一刻
标记:

<script type="text/javascript">

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-XXXXXXXX-XX']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

</script>
<input onclick="_gaq.push(['_trackEvent', 'Forms', 'Submit', 'mylist', , false]);" name="submit" id="af-submit-image-873297158" type="image" class="image img-responsive" style="background: none;" alt="Submit Form" src="img/orange_free_instant_access_button.png" tabindex="503">

var _gaq=_gaq | |[];
_gaq.push(['''u setAccount','UA-XXXXXXXX-XX']);
_gaq.push([''u trackPageview']);
(功能(){
var ga=document.createElement('script');ga.type='text/javascript';ga.async=true;
ga.src=('https:'==document.location.protocol?'https://ssl' : 'http://www“)+”.google analytics.com/ga.js';
var s=document.getElementsByTagName('script')[0];s.parentNode.insertBefore(ga,s);
})();
表单事件跟踪:

<script type="text/javascript">

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-XXXXXXXX-XX']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

</script>
<input onclick="_gaq.push(['_trackEvent', 'Forms', 'Submit', 'mylist', , false]);" name="submit" id="af-submit-image-873297158" type="image" class="image img-responsive" style="background: none;" alt="Submit Form" src="img/orange_free_instant_access_button.png" tabindex="503">

每次我加载页面并单击表单时,事件都会记录在分析的实时事件部分。这似乎很有效,但在过去24小时内,总共有100多个已知注册到该列表中,只有少数被记录。(总共12次,其中大部分是我自己提交的测试)

我只能假设事件没有被发送到Google,但就我所知,代码看起来很好,我还可以看到事件通过控制台使用GA调试插件发送

我尝试过通过jQuery调用触发事件,我尝试过各种事件,比如onmousedown&实际的表单提交事件,但什么都没有。(我甚至从analytics.js回滚到ga.js,创建了一个全新的配置文件,因为我认为这可能是一个“测试版”问题。)

我确实怀疑在页面更改位置之前没有及时触发事件,但当我测试自己时,每次都会触发事件。我试过Chrome、FF和IE10


在我修复这个问题的过程中,我在页面主体上附加了一个onload事件,我可以看到这些事件正在被记录下来,即使是来自实时访客。问题似乎集中在表单事件上。

Ok看起来是时候回答我自己的问题了,以利于其他人:

我做了一些挖掘,这是由于在事件被正确跟踪之前页面更改位置引起的。多亏了Joel Peterson的一篇文章,我想出了以下代码:

jQuery(document).ready(function($){
    $('form').submit(function(event){
        //if analytics object exists
        if(window._gat){
            event.preventDefault();
            optinForm = this;
            _gaq.push(['_set','hitCallback', function(){
                                                optinForm.submit();
                                             }]);
            _gaq.push(['_trackEvent', 'Forms', 'Submit', 'hbsanewtraffic']);
        }
        //if no analytics object, service as normal
    });
});
它使用回调函数确保先发送事件,然后提交我的表单。

Replace\u gaq.push([''u trackEvent','Forms','Submit','mylist',false])

下面是一个例子

ga(“发送”、“事件”、“类别”、“行动”)

例如:

ga(“发送”、“事件”、“表格”、“提交”)


作为onClick属性的值放置。

这不会导致循环吗?在回调中提交表单肯定会触发$('form')。再次提交函数?不,调用哪个提交方法的optinfo引用DOM对象,而不是jQuery对象。