【发布时间】:2019-10-05 18:50:48
【问题描述】:
我在我们的网站上使用 Google 跟踪代码管理器,并在提交表单后通过它向 Google Analytics 发送事件。下面的代码只是简单的和提交确认一起打印出来的。
$(document).ready(function() {
sendGA('form_submit_completed', '{form_id}', '{form_sender}');
});
而sendGA函数定义如下。
function sendGA(anec, anea, anel) {
if(typeof dataLayer === 'undefined') {
console.log('Google analytics undefined, aren\'t you logged in?');
return;
}
dataLayer.push({
'event': 'ga_custom_event',
'ga_anec': anec,
'ga_anea': anea,
'ga_anel': anel
});
console.log('ga_sent: {anec: ' + anec + ', anea: ' + anea + ', anel: ' + anel + '}');
}
将来自 Google Analytics 的数据与记录在我们数据库中的提交进行比较时,我发现有些提交没有记录在 Google Analytics 中。我自己无法在任何浏览器中复制它。
有没有人知道可能导致这种行为的原因?我知道所有操作都是异步的,所以有时如果用户立即离开页面,请求可能无法通过。但在上周,这发生在大约 10% 的提交中,这是由这个引起的。
更新的源代码仍有 10% 的下降:
function sendGA(anec, anea, anel)
{
anec = anec || "empty_anec";
anea = anea || "empty_anea";
anel = anel || "empty_anel";
let loggedIn = false;
if(typeof window.dataLayer === 'undefined') {
console.log('Google analytics undefined, aren\'t you logged in?');
loggedIn = true;
}
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
'event': 'ga_custom_event',
'ga_anec': anec,
'ga_anea': anea,
'ga_anel': anel
});
if(!loggedIn)
console.log('ga_sent: {anec: ' + anec + ', anea: ' + anea + ', anel: ' + anel + '}');
}
【问题讨论】:
标签: javascript google-analytics google-tag-manager