我在发送GA点击事件时尝试包含自定义维度列表。
此代码有效:
ga('send', 'event', category, action, label, {
'hitCallback': function () {
//some code goes here
}
});
但是在添加自定义尺寸时:
ga('send', 'event', category, action, label, customDimensions.dimensionsToSend, {
hitCallback': function () {
//some code
},
'hitCallbackFail': function () {
alert("Unable to send Google Analytics data");
}
});
hitCallback和hitCallbackFail都没有被触发。 我在几个地方(like here)读到我应该可以为GA发送事件功能添加自定义维度,但也许我做错了。
答案 0 :(得分:2)
第二个代码块的问题是没有正确设置自定义尺寸。您无法将自定义维度作为主要ga()
函数的进一步参数传递。相反,您需要通过fieldsObject
传递它们(作为您作为最后一个参数发送的对象的一部分),如下所示:
ga('send', 'event', category, action, label, {
'dimension1': 'Some value', // Custom Dimension 1
'dimension2': 'Some value 2', // Custom Dimension 2
'hitCallback': function () {
//some code
}
});
这是:
的简写ga('send', {
'hitType': 'event',
'eventCategory': category,
'eventAction': action,
'eventLabel': label,
'dimension1': 'Some value', // Custom Dimension 1
'dimension2': 'Some value 2', // Custom Dimension 2
'hitCallback': function () {
//some code
}
});
请参阅ga()
command queue reference。
另请注意hitCallbackFail
不是有效字段;不会因失败而被召唤。
事实上,无论您发送的匹配是成功还是Google Analytics拒绝了该匹配,您提供给hitCallback
的功能都会被执行。只有在未加载Google Analytics资源库或服务器连接失败的情况下,它才会被执行的唯一时间。
如果您希望执行代码,即使服务器出现故障,也可以使用超时。请参阅上面的示例:
// Use a timeout to ensure the execution of critical application code.
ga('send', 'pageview', {'hitCallback': criticalCode});
setTimeout(criticalCode, 2000);
// Only run the critical code once.
var alreadyCalled = false;
function criticalCode() {
if (alreadyCalled) return;
alreadyCalled = true;
// Run critical code here...
}