Google跟踪代码管理器是否将字符串值“ false”的变量解释为布尔值false?

时间:2019-02-19 18:32:37

标签: google-tag-manager

我在代码管理器中设置了一个新的数据层变量,该变量将表示事件是否为非互动匹配。这应该是布尔值true / false。我设置了默认值false(不带引号)。

当我在事件中明确包含此变量作为布尔值时,我注意到了,例如:

dataLayer.push({'event': 'gaEvent', ..., 'nonInteractionHit': false});

标签管理器的预览模式在事件属性Non-Interaction Hit: false中以布尔值(不带引号)的形式显示。这是预期的。

但是,当我没有为nonInteractionHit指定值时,例如:

dataLayer.push({'event': 'gaEvent', ...});

预览模式将以Non-Interaction Hit: 'false'触发的事件显示为 string 值(带引号)。基本上,它似乎已经将我的默认值解释为字符串而不是布尔值。这很令人担忧,因为JavaScript非常棒,而字符串'false'实际上是 truthy

所以我的问题是:GTM是将'false'或'true'的字符串表示形式视为正确的布尔值,还是只是字符串,特别是在应为布尔值的属性的上下文中使用时?就我而言,'false'是否实际评估为false

额外信用:是否可以将变量的默认值指定为适当的布尔值?用户界面似乎不允许使用它-您只能在文本框中输入一个值,该值显然可以解释为字符串。

1 个答案:

答案 0 :(得分:1)

我相信我已经找到了问题的一般答案,但是如果有人想提供更好的答案,我将保留此答案。

我在这里找到了答案:https://www.simoahava.com/analytics/fun-google-tag-manager-part-2/#true-and-false

我不确定在我的情况设置“非互动匹配”中如何正确解释“假”,但似乎某些GTM变量确实需要布尔类型,并输入truefalse字段中的“无引号”被解释为字符串,并且可能无法按预期工作。而且很遗憾,您不能在GTM文本字段中指定布尔值true / false。

Simo的一种优雅的解决方法是也基于一个Javascript代码段(分别写为function(){return true;}function(){return false;}来定义{{true}}和{{false}}变量。然后,就我而言,我可以将默认值设置为变量{{false}}。我已经验证,在预览模式下,这会显示为正确的,未引用的布尔值。

进一步的证明:当我在文本框中输入默认值作为文本false时,然后为“ Convert false to ...”设置格式替代,并指定了一些任意的新值。当我触发该事件时,它不会被覆盖。它显示为'false'。因此,GTM自己的替代系统未将文本false解释为布尔值。它也没有将其解释为真实的...

总结:使用您自己的{{true}}{{false}}变量以确保您分配了正确的布尔值。