首页 > 解决方案 > 我可以在不使用 .push 的情况下在 google Datalayer 对象上设置属性吗?

问题描述

Google Datalayer 文档建议将数据推送到对象上。但我想知道如果我在脚本中覆盖现有属性或在对象上设置新属性,是否会被认为是有效的并得到正确评估。例如,我的主页加载并在我的脑海中:

<script>window.datalayer = window.datalayer || []; 
datalayer.push({'event': 'my event'}); </script>

然后在随后的脚本中,我按以下方式使用 lodash set:

  <script>_.set(window.datalayer,'0.page.pageType', "someType"); </script>

将数据层对象更改为:

{
  "event": "my event",
  "page": {
    "pageType": "someType"
   }
}

这会有效吗?信息是否会正确传达给谷歌平台。

标签: javascripthtmlgoogle-analyticsgoogle-datalayer

解决方案


dataLayer 实际上是一个对象数组,用于保存数据的更改历史。因此,当您执行 dataLayer.push() 时,实际上是在此历史记录中添加了一个额外的元素。

因此,从技术上讲,您可以跟踪所有参数并模仿相同的结果,但是所提供的代码将不起作用。

数组中的示例对象:

event: "gtm.timer"
gtm.timerCurrentTime: 1602085776920
gtm.timerElapsedTime: 30004
gtm.timerEventNumber: 1
gtm.timerId: 99
gtm.timerInterval: 30000
gtm.timerLimit: 10
gtm.timerStartTime: 1602085746916
gtm.triggers: "440772_256"
gtm.uniqueEventId: 286

推荐阅读