【问题标题】:How to fire Google Tag Manager event when global JavaScript variable equals a value当全局 JavaScript 变量等于一个值时如何触发 Google 跟踪代码管理器事件
【发布时间】:2016-08-03 19:39:09
【问题描述】:

我试图弄清楚如何根据全局 JavaScript 变量的值触发 Google 跟踪代码管理器事件。我在 Google 跟踪代码管理器的触发器视图中看到,我们可以为全局 JavaScript 变量等于某个值时设置触发器。但是,由于某种原因,此触发器永远不会触发。

我目前正在预览,并在进行所有更改后保存了我的更改(再次单击预览),但由于某种原因,GTM 没有触发触发器。

我创建了一个名为“Screener Step”的自定义变量,其类型为“JavaScript 变量”,全局变量名称为“screenerStep”。当“Screener Step”等于“1”时设置触发。默认为0。

我已经将变量“screenerStep”声明为全局变量,如下定义:

window.screenerStep = 0;

我可以通过在控制台中输入 screenerStep 并验证它是否等于 1 来验证 screenerStep 确实设置为 1

如果重要的话,我正在使用 AngularJS 在 $watch 中设置 screenerStep 的值。

提前谢谢你。

更新。即使screenerStep 初始化为触发条件1,触发器也不会触发。

更新。问题是由于触发器实际上是一个自定义事件,它恰好有一个过滤器,仅当screenerStep 等于1 时才会触发。通过document.dispatchEvent(new CustomEvent('testEvent')); 广播事件后,触发器确实触发了。在我弄清楚更多事情之后,我会发布一个正式的解决方案。

【问题讨论】:

    标签: javascript angularjs google-analytics google-tag-manager


    【解决方案1】:

    如果您希望 GTM 基于 JavaScript 变量的值触发,您需要执行以下操作:

    首先,请阅读:https://developers.google.com/tag-manager/devguide

    然后使用dataLayer 调度自定义事件:

    window.dataLayer.push(
      {'event': 'Your Custom Event'}
    );
    

    注意,您必须首先在代码中的某处将dataLayer 初始化为一个空数组。如果您希望dataLayer 在页面加载时可用,dataLayer 需要在您的 GTM 容器执行之前存在。

    出于我的目的(事件),我刚刚在异步加载的 javascript 中初始化了 dataLayer

    然后,您可以过滤 GTM 触发器,使其仅在全局 JavaScript 变量等于某个值时触发。为了清楚起见,您需要首先调度一个自定义事件来指示 GTM 检查您的全局 JavaScript 变量的值。全局 JavaScript 变量在 GTM 中设置为变量 -> JavaScript 变量 -> 输入全局 JavaScript 变量的名称。

    现在,您可能会想,最好为您希望触发 GTM 标记的各种条件设置不同的事件名称。这就是我最终选择的路径,它完全消除了对全局 JavaScript 变量的需求。但是,在某些情况下,从 JavaScript 中提取值可能很有用。在这些情况下,我们可以像这样将数据添加到我们的自定义事件中:

    window.dataLayer.push(
      {'event': 'Custom Event'},
      {'attributes': {
        {'custom attribute 1': variableHere},
        {'custom attribute 2': anotherVariableHere},
        ...
      }
    );
    

    您也可以直接将变量推送到dataLayer

    window.dataLayer.push(
      {'custom variable 1': variableHere}
    );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-26
      • 2021-10-30
      • 1970-01-01
      • 2022-07-01
      • 2022-06-22
      • 1970-01-01
      • 2013-08-14
      • 1970-01-01
      相关资源
      最近更新 更多