2013-10-21 48 views
7

我正在尝试将分析事件跟踪添加到窗体上提交输入的onclick事件中。在表单提交上触发Google Analytics(分析)事件

我试过多个不同的例子,并引用了几个不同的SO帖子来达到这一点。我可以让onclick提交表单或者触发跟踪事件,但不能同时触发跟踪事件。

第一个例子:(提交表单+登录到控制台,但不会触发事件)

<!-- Analytics tracking code --> 

<form action="test.php" id="form" method="post"> 

    <input type="text" name="name" id="name"> 

    <!-- Submits form + logs to console but doesn't fire event --> 

    <input type="submit" name="submit" value="Submit" onclick=" 
     var _this = this; 
     _gaq.push(
      ['_trackEvent', 'Forms', 'Submit', 'Home Contact'], 
      function() { 
       console.log('submitting'); 
       $(_this).parents('form').submit(); 
      } 
     ); 
    "> 

</form> 

第二个例子:(火灾事件日志+安慰,但不提交表单)

<!-- Analytics tracking code --> 

<form action="test.php" id="form" method="post"> 

    <input type="text" name="name" id="name"> 

    <!-- Fires event + logs to console but doesn't submit form --> 

    <input type="submit" name="submit" value="Submit" onclick=" 
     var _this = this; 
     _gaq.push(['_set','hitCallback',function(){ 
      console.log('submitting'); 
      $(_this).parents('form').submit(); 
     }]); 
     _gaq.push(
      ['_trackEvent','My category','My action'] 
     ); 
     return !window._gaq; 
    "> 

</form> 

我也发现,如果我添加返回false到第一个示例的onclick事件的结尾,它将触发分析事件跟踪但不提交表单。

回答

5

(这确实需要一个常见问题...)

谷歌Analytics(分析)记录从分析服务器请求一个图片,使用跟踪数据作为对图像请求参数数据。如果新页面在_trackEvent_pageView之后立即呈现在当前窗口中,则可以取消图像请求,并且不记录数据。

通常的模式是在加载新页面或提交表单之前添加一个小延迟。

尝试

<input type="submit" name="submit" value="Submit" onclick=" 
    var _this = this; 
    _gaq.push(['_trackEvent', 'Forms', 'Submit', 'Home Contact']); 
    setTimeout(function() {$(_this).parents('form').submit()}, 150); 
    return false;" 
> 

我的选择是绑定到jQuery的窗体本身上提交的事件,像

$('#form').submit(function(e){ 
    e.preventDefault(); 
    _gaq.push(['_trackEvent', 'Forms', 'Submit', 'Home Contact']); 
    var form = this; 
    setTimeout(function(){ form.submit()}, 150); 
}); 
+0

我修改这个为具有1秒超时+添加缺少的[在分析推代码。事件跟踪工作,但没有提交表格。 – James

+1

抱歉,错字(和setTimeout错过!) - 只需要很短的延迟,150ms似乎工作。我还添加了一个替代例子。 – mike

+0

我仍然无法实现此功能,这两种方法都会触发分析事件,但都不会提交表单。我不禁感到我失去了一些明显的东西。 – James

相关问题