首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >单击表单提交后在google analytics中跟踪事件

单击表单提交后在google analytics中跟踪事件
EN

Stack Overflow用户
提问于 2010-11-03 19:30:50
回答 5查看 71.2K关注 0票数 63

当有人填写表单并单击提交时,我需要在google analytics中跟踪事件。出现的结果页面是一个标准仪表板类型的页面,所以为了跟踪该页面上的事件,我必须在url中传递事件,然后读取url并基于它输出google analytics event tracking javascript代码。这是一个经常加书签的页面,页面会被重新加载,点击返回,等等。所以我真的不想在URL中传递跟踪事件,搞砸分析。

相反,我更愿意在带有表单的页面上执行类似以下jQuery代码的操作:

代码语言:javascript
复制
$('#form_id').submit(function() {
  _gaq.push('_trackEvent', 'my category', 'my action');
});

我担心上面的问题是我会错过一些被跟踪的事件,因为在调用javascript之后,浏览器会立即提交表单并转到另一个网页。如果utm.gif跟踪图像没有及时加载,我会错过事件:(.

我的恐惧是合理的吗?如何确保不会错过被跟踪的事件?

EN

回答 5

Stack Overflow用户

发布于 2014-07-07 22:30:02

对于那些使用谷歌通用分析工具并使用hitCallback (f.x。在验证之后但在表单提交之前跟踪事件)请记住,google-analytics.js可能会被阻止,但是ga函数仍将被定义,因此不会发生提交。

代码语言:javascript
复制
ga('send', 'pageview', event, {
  'hitCallback': function() {
    _this.submit();
  }
})
return !window.ga;

可以通过检查ga是否已加载的验证来修复

代码语言:javascript
复制
ga('send', 'pageview', event, {
  'hitCallback': function() {
    _this.submit();
   }
})
return !(ga.hasOwnProperty('loaded') && ga.loaded === true)
票数 12
EN

Stack Overflow用户

发布于 2010-11-03 19:51:01

如果你不太担心100%的准确率,你可以只坚持1秒的延迟。

代码语言:javascript
复制
$('#form_id').submit(function(e) {
  var form = this;
  e.preventDefault(); // disable the default submit action

  _gaq.push('_trackEvent', 'my category', 'my action');

  $(':input', this).attr('disabled', true); // disable all elements in the form, to avoid multiple clicks

  setTimeout(function() { // after 1 second, submit the form
    form.submit();
  }, 1000);
});
票数 6
EN

Stack Overflow用户

发布于 2013-05-16 15:02:07

WHile hitCallback解决方案很好,我更喜欢设置cookie并从下一页触发事件。通过这种方式,GA中的故障不会停止我的站点:

代码语言:javascript
复制
// Function to set the event to be tracked:
function setDelayedEvent(category, action, label, value) {
  document.cookie='ev='+escape(category)+'!'+escape(action)+'!'+escape(label)+'!'+value
      +'; path=/; expires='+new Date(new Date().getTime()+60000).toUTCString();
}

// Code run in every page, in case the previous page left an event to be tracked:
var formErrorCount= formErrorCount || 0;
var ev= document.cookie.match('(?:;\\s*|^)ev=([^!]*)!([^!]*)!([^!]+)!([^!]+)(?:;|\s*$)');
if (ev && ev.length>2) {
  _gaq.push(['_trackEvent', unescape(ev[1]), unescape(ev[2]),
     unescape(ev[3]), parseInt(ev[4])]);
  document.cookie='ev=; path=/; expires='+new Date(new Date().getTime()-1000).toUTCString();
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4086587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档