我在GTM中使用此代码,它从另一个域中检索一个数字,并使用dL.push将其存储在dataLayer值上。我希望变量在特定事件中可用。
(function ()
{
var callbackMethodName = "adnscallback";
window[callbackMethodName] = function(data) {
(function() {
dataLayer.push({
'event': 'ga_new',
"id2": data.uid
});
})();
}
var sc = document.createElement("script");
sc.id = "script_" + callbackMethodName;
sc.src = "https://example.site.com/getnumber?callback=" + callbackMethodName;
document.body.appendChild(sc);
})();
但我已经创建了一个名为ga_new的事件(硬编码,在页面上创建所有类型的值),当这些代码运行时,它会创建另一个名为ga_new的事件,而不是在现有事件上推送值。这会在标签双重触发时产生问题。
我做错了什么和推送,而不是附加数据,它再次创建事件?
答案 0 :(得分:0)
您无法“更新”自定义事件。 “event”关键字是GTM的一个信号,它需要使用新值更新其内部数据结构。
页面中的datalayer变量是一个对象数组,内部数据结构是合并新值的单个对象,并且相同键的现有值将被覆盖。 GTM用自己的代码覆盖JS“push”方法的本机实现,该代码监视“event”关键字。因此,每次遇到“事件”键时,都会触发更改。
您需要为事件指定其他名称,或者更改触发器,以便仅在设置“ga_new”事件且设置了data.uid字段时触发。