Kur*_*ler 4 google-tag-manager
我在跟踪代码管理器中设置了一个新的数据层变量,该变量将表示事件是否是非交互命中。这应该是一个布尔真/假值。我设置了默认值false(不带引号)。
我注意到当我在我的事件中明确包含此变量作为布尔值时,例如:
dataLayer.push({'event': 'gaEvent', ..., 'nonInteractionHit': false});
Run Code Online (Sandbox Code Playgroud)
跟踪代码管理器的预览模式在事件属性中显示Non-Interaction Hit: false为布尔值(不带引号)。这是预料之中的。
但是,当我没有指定 nonInteractionHit 的值时,例如:
dataLayer.push({'event': 'gaEvent', ...});
Run Code Online (Sandbox Code Playgroud)
Non-Interaction Hit: 'false'预览模式显示使用as 作为字符串值(带引号)触发的事件。基本上,它似乎将我的默认值解释为字符串而不是布尔值。这很令人担忧,因为 JavaScript 非常棒,而且字符串'false'实际上是true。
所以我的问题是:GTM 是否将“false”或“true”的字符串表示视为正确的布尔值,或者只是字符串,特别是在应该是布尔值的属性的上下文中使用时?就我而言,实际上是否根据我的需要'false'进行评估?false
额外加分:有没有办法将变量的默认值指定为正确的布尔值?用户界面似乎不允许这样做——你只是得到一个文本框来输入一个显然被解释为字符串的值。
我相信我已经找到了我的问题的一般答案,但如果有人想提供更好的答案,我将对此保持开放。
我在这里找到了答案: https: //www.simoahava.com/analytics/fun-google-tag-manager-part-2/#true-and-false
我不确定在我的情况下设置非交互命中时如何解释“false”,但似乎某些 GTM 变量确实需要布尔类型,并且在字段中输入true或false(不带引号)被解释为字符串,并且可能无法按预期工作。不幸的是,您无法在 GTM 文本字段中指定布尔值 true/false。
Simo 的优雅解决方法是根据 Javascript 代码段定义 {{true}} 和 {{false}} 变量,分别写为function(){return true;}和function(){return false;}。然后,就我而言,我可以将默认值设置为变量{{false}}。我已经验证,在预览模式下,这显示为正确的、未加引号的布尔值。
进一步的证明:当我输入默认值作为false文本框中输入的文本,然后为“将 false 转换为...”设置格式覆盖并指定一些任意新值时。当我触发该事件时,它没有被覆盖。它显示的值为'false'。因此,GTM 自己的覆盖系统不会将文本解释false为布尔值。它也没有将其解释为真实的,要么......
要点:使用您自己的{{true}}变量{{false}}来确保您分配了正确的布尔值。
| 归档时间: |
|
| 查看次数: |
5371 次 |
| 最近记录: |