防止基于dataLayer变量的Google跟踪代码管理器事件

时间:2019-04-26 09:28:00

标签: google-tag-manager google-datalayer

我将Google跟踪代码管理器代码配置为在所有页面视图上触发。但是,在某些页面上,我可能需要根据内部数据禁用该标记。对我来说,这听起来像是dataLayer的工作。

我最初的想法是创建一个名为“ disableGTMTag”的dataLayer变量,并为其提供一个值进行验证。然后GTM可以评估该值并采取适当的措施。

因此,在dataLayer中,我创建了disableGTMTag变量并将其硬编码为始终具有值“ google”(出于测试目的)。在GTM调试模式下运行页面,我可以确认在dataLayer中存在disableGTMTag变量,其值为“ google”。

要设置标签,我将标签的触发器更新为仅在disableGTMTag不包含“ google”时才触发。但是标签仍然被触发。然后,我尝试将触发器设置为在“所有页面”上触发,但是在disableGTMTag包含“ google”时添加了一个例外。该标记仍被触发。

我的理解是,触发器异常必须与触发触发器具有相同的类型。但是我继续为定制事件创建了一个次要异常,该事件与查看disableGTMTag值的正则表达式“。*”匹配。仍然会在网页加载时触发代码。

这似乎是一件简单的事情:除非此dataLayer变量告诉您​​不要这样做,否则请始终运行此标记。但这对我不起作用。

是否有其他方法来限制页面视图触发?如何使用dataLayer变量阻止基于网页视图的代码触发?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。推荐的引用dataLayer的方式为:

window.dataLayer = window.dataLayer || []

但是我发现当我使用此约定时,我的Page View事件首先被触发,然后在使dataLayer值不可用之后发生了所有数据消息。更改为:

window.dataLayer = []

强制消息在页面查看事件之前发生,从而使dataLayer值可用于评估。我知道这将要重新声明dataLayer,但这是可行的。