【发布时间】:2017-01-08 14:35:09
【问题描述】:
我将数据推送到GoogleTagManager的dataLayer后,例如:
dataLayer.push({user: 'me', site: 'bacon.com'})
如何在不知道推送什么的情况下将整个对象从 GTM 面板推送到数据层?
也许有存储这些信息的js变量?
谢谢
【问题讨论】:
标签: javascript google-tag-manager
我将数据推送到GoogleTagManager的dataLayer后,例如:
dataLayer.push({user: 'me', site: 'bacon.com'})
如何在不知道推送什么的情况下将整个对象从 GTM 面板推送到数据层?
也许有存储这些信息的js变量?
谢谢
【问题讨论】:
标签: javascript google-tag-manager
dataLayer 是一个全局 JavaScript 变量,一个对象数组。 GTM 可以通过读取整个数组的 JavaScript 变量类型来访问全局变量。
然后,您可以使用自定义 JavaScript 变量(它是一个返回值的匿名函数)来提取该数组中的最后一个元素。
所以你首先要创建一个 javascript 类型的 GTM 变量并将变量名设置为“dataLayer”:
然后使用它来访问返回数组的最后一个元素:
在自定义 JS 变量中获取最新条目,在您的情况下为“{user:'me', site:'bacon.com'}”,而无需知道对象的确切键。然后,您可以遍历该对象以对各个值执行任何您需要执行的操作。
请记住,变量仅在事件发生时才被评估,因此您要么需要“原生”GTM 事件(点击、提交等),要么需要推送自定义事件。也可能发生最后一个元素实际上是一个事件本身(例如,如果点击事件发生在您推送数据之后,则为 gtm.click)。
【讨论】:
undefined。虽然如果在控制台中运行dataLayer[dataLayer.length-1],它确实给了我我需要的东西......为什么?