【问题标题】:GTM issue with double event created instead of dl push创建双事件而不是 dl push 的 GTM 问题
【发布时间】:2016-09-14 12:10:52
【问题描述】:

我在 GTM 中使用此代码,它从另一个域检索一个数字并将其存储在 dataLayer 值中,并带有 dL.push。我希望该变量在特定事件中可用。

(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 的事件,而不是在现有事件上推送值。这会导致标签出现问题,因为它们是双重触发的。

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

【问题讨论】:

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


    【解决方案1】:

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

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

    您要么需要一个不同的事件名称,要么更改触发器,使其仅在设置“ga_new”事件和设置 data.uid 字段时触发。

    【讨论】:

      猜你喜欢
      • 2016-03-29
      • 2021-01-23
      • 1970-01-01
      • 2011-04-22
      • 1970-01-01
      • 2016-02-17
      • 1970-01-01
      • 1970-01-01
      • 2023-01-31
      相关资源
      最近更新 更多