我使用Google跟踪代码管理器实施Google Analytics(分析)。因此,在我的网站上启动的跟踪器名称并不总是相同的,例如。 gtm2,gtm3。
总体目标是能够将数据发送到我的自定义指标,如下所示:ga( 'gtm2.set', 'metric2', 'custom metric data');
我不知道为什么此代码无法正常工作:
var yone = (ga.getAll()[1].get("name"));
var ytwo = ".set";
var ythree = yone.concat(ytwo);
ga( ythree, 'metric2', 'custom metric data');
Javascript控制台中的错误是“ VM3324:1 Uncaught TypeError:ga.getAll不是函数”。我不确定为什么会这样显示,因为当我执行
console.log(ga.getAll()[1].get("name"));
时,正确的跟踪器名称会显示在控制台日志中。 gtm2。编辑
我尝试引入@balexandre提到的回调函数,所以我的代码变成了:
var yone = ga(function() {
ga.getAll()[1].get("name")});
var ytwo = ".set";
var ythree = yone.concat(ytwo);
ga( ythree, 'metric2', 'custom metric data');
在这种情况下,控制台现在显示不同的错误消息“未捕获的TypeError:无法读取未定义的属性'concat'”。
谢谢。
最佳答案
这是一个回调,所以,您不能只是调用您的代码并希望所有代码都能正常工作,而不会!
你尝试了这个
var yone = ga(function() {
ga.getAll()[1].get("name")
});
var ytwo = ".set";
var ythree = yone.concat(ytwo);
ga( ythree, 'metric2', 'custom metric data');
但是当您在
var ytwo
行中时,在yone
中还没有任何内容,该调用尚未触发...因此,这是一个回调(仅在加载脚本时才执行代码),您不会不知道是需要1毫秒还是10秒...因此,您应该尝试:
ga(function() {
// debugger;
var yone = ga.getAll()[1].get("name");
var ytwo = ".set";
var ythree = yone.concat(ytwo);
ga( ythree, 'metric2', 'custom metric data');
});
然后,如果需要,请删除注释,然后使用浏览器调试器在回调内部检查所有现有变量并执行代码...