当有人填写表单并单击提交时,我需要在google analytics中跟踪事件。出现的结果页面是一个标准仪表板类型的页面,所以为了跟踪该页面上的事件,我必须在url中传递事件,然后读取url并基于它输出google analytics event tracking javascript代码。这是一个经常加书签的页面,页面会被重新加载,点击返回,等等。所以我真的不想在URL中传递跟踪事件,搞砸分析。
相反,我更愿意在带有表单的页面上执行类似以下jQuery代码的操作:
$('#form_id').submit(function() {
_gaq.push('_trackEvent', 'my category', 'my action');
});
我担心上面的问题是我会错过一些被跟踪的事件,因为在调用javascript之后,浏览器会立即提交表单并转到另一个网页。如果utm.gif跟踪图像没有及时加载,我会错过事件:(.
我的恐惧是合理的吗?如何确保不会错过被跟踪的事件?
发布于 2014-07-07 22:30:02
对于那些使用谷歌通用分析工具并使用hitCallback (f.x。在验证之后但在表单提交之前跟踪事件)请记住,google-analytics.js可能会被阻止,但是ga函数仍将被定义,因此不会发生提交。
ga('send', 'pageview', event, {
'hitCallback': function() {
_this.submit();
}
})
return !window.ga;
可以通过检查ga是否已加载的验证来修复
ga('send', 'pageview', event, {
'hitCallback': function() {
_this.submit();
}
})
return !(ga.hasOwnProperty('loaded') && ga.loaded === true)
发布于 2010-11-03 19:51:01
如果你不太担心100%的准确率,你可以只坚持1秒的延迟。
$('#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);
});
发布于 2013-05-16 15:02:07
WHile hitCallback解决方案很好,我更喜欢设置cookie并从下一页触发事件。通过这种方式,GA中的故障不会停止我的站点:
// 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();
}
https://stackoverflow.com/questions/4086587
复制相似问题