创建双事件的GTM问题而不是dl push

时间:2016-09-14 12:10:52

标签: javascript jquery json jsonp google-tag-manager

我在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的事件,而不是在现有事件上推送值。这会在标签双重触发时产生问题。

我做错了什么和推送,而不是附加数据,它再次创建事件?

1 个答案:

答案 0 :(得分:0)

您无法“更新”自定义事件。 “event”关键字是GTM的一个信号,它需要使用新值更新其内部数据结构。

页面中的datalayer变量是一个对象数组,内部数据结构是合并新值的单个对象,并且相同键的现有值将被覆盖。 GTM用自己的代码覆盖JS“push”方法的本机实现,该代码监视“event”关键字。因此,每次遇到“事件”键时,都会触发更改。

您需要为事件指定其他名称,或者更改触发器,以便仅在设置“ga_new”事件且设置了data.uid字段时触发。