如何在全局JavaScript变量等于某个值时触发Google标记管理器事件
我试图找出如何根据全局JavaScript变量的值触发Google标记管理器事件。我在Google Tag Manager的触发器视图中看到,我们可以为全局JavaScript变量等于某个值时设置触发器。然而,由于某些原因,该触发器从未触发 我目前正在预览,并在进行所有更改后保存了更改(再次单击预览),但由于某些原因,GTM没有触发触发 我创建了一个名为“Screener步骤”的自定义变量,它的类型为“JavaScript变量”,全局变量名为“screenerStep”。当“筛选步骤”等于“1”时,触发器设置为。默认设置为0 我通过如下定义将变量“screenerStep”声明为全局变量:如何在全局JavaScript变量等于某个值时触发Google标记管理器事件,javascript,angularjs,google-analytics,google-tag-manager,Javascript,Angularjs,Google Analytics,Google Tag Manager,我试图找出如何根据全局JavaScript变量的值触发Google标记管理器事件。我在Google Tag Manager的触发器视图中看到,我们可以为全局JavaScript变量等于某个值时设置触发器。然而,由于某些原因,该触发器从未触发 我目前正在预览,并在进行所有更改后保存了更改(再次单击预览),但由于某些原因,GTM没有触发触发 我创建了一个名为“Screener步骤”的自定义变量,它的类型为“JavaScript变量”,全局变量名为“screenerStep”。当“筛选步骤”等于“1”
window.screenerStep=0
我可以通过在控制台中键入screenerStep
并验证它是否等于1来验证screenerStep
是否确实设置为1
如果有必要,我将使用AngularJS在$watch
中设置screenerStep
的值
先谢谢你
更新。即使将screenerStep
初始化为作为触发条件的1
时,触发器也不会触发
更新。问题是因为触发器实际上是一个自定义事件,当
screenerStep
等于1
时,恰好有一个筛选器只触发该事件。通过document.dispatchEvent(新的CustomEvent('testEvent'))广播事件后代码>触发器确实触发了。在我弄明白更多事情之后,我将发布一个正式的解决方案。如果您希望GTM基于JavaScript变量的值触发,则需要执行以下操作:
首先,阅读以下内容:
然后使用数据层
发送自定义事件:
window.dataLayer.push(
{'event': 'Your Custom Event'}
);
注意,首先必须将数据层
初始化为代码中的某个空数组。如果希望dataLayer
在页面加载时可用,dataLayer
需要在GTM容器执行之前存在
出于我的目的(事件),我只是在异步加载的javascript中初始化了数据层
然后,您可以过滤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},
...
}
);
您也可以直接将变量推送到数据层
window.dataLayer.push(
{'custom variable 1': variableHere}
);