数据层值更改后触发代码

时间:2019-08-22 13:22:16

标签: google-tag-manager google-datalayer

我们确实有一个如下所示的数据层:

window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
Example1: 'false'
Example2: 'false'
Example3: 'false'
Example4: 'false'
Example5: 'false'
});

我们要在某些值更改后触发代码,而无需重新加载页面。 当示例1和示例3的状态为true时,应立即触发代码。

有人告诉我向数据层添加一个事件,例如:

window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
event: 'exampleHappened',
Example1: 'true'
});

是否可以向数据层添加5个事件而不会出现问题?

编辑: 我将数据层分为5个数据层,每个数据层都有

window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
event: 'exampleHappened',
Example1: 'true'
});

最后一件事: 如何设置触发事件后触发的Tagmanager设置?

先谢谢您

1 个答案:

答案 0 :(得分:0)

是的,您需要一个事件-GTM会覆盖数据层阵列上的本机“推送”方法,以扫描进入的对象以查找“事件”关键字。只有当事件关键字存在时,GTM才会更新其内部状态并使新值可用于标记和触发器。但是,您不能在一次推送中使用多个事件。

但是,第一个示例仅需要一个事件:

window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
"Example1": "false",
"Example2": "false",
"Example3": "false",
"Example4": "false",
"Example5": "false",
"event":"examplesHappened"
});

如果您坚持将其分为多个推送,则可以使用trigger group-首先使用“ exampleAdded”事件创建一个自定义事件触发器,然后创建一个触发器组并添加该触发器五次:

  

请注意,您可以多次添加触发器。通过添加触发器   多次触发该特定触发器必须触发   它已多次添加到触发器组的组中   工作。

Source

缺点是每页只能使用一次。

如果您的推送是通过某种循环创建的,则只需增加即可为事件编号:

for(i=1;i<6;i++) {
 var obj = {};
 obj["example"+i] = "false";
 obj["event"] = "exampleHappened_"+i
 dataLayer.push(obj);
}

,然后在事件“ exampleHappened5”上触发。这将多次工作。