我们确实有一个如下所示的数据层:
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设置?
先谢谢您
答案 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”上触发。这将多次工作。