javascript - 我可以在不使用 .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"
}
}
这会有效吗?信息是否会正确传达给谷歌平台。
解决方案
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
推荐阅读
- tree - 带有子元素的嵌套列表元素的 Lisp 位置
- powershell - 为什么 Length() 不出现在数组的 Get-Member 中?
- reactjs - 对提交位置做出反应
- apache - 如何在 Rewrite_Map 中允许特殊字符?
- mysql - 找出每年每学期以美元计算的销售额最差和最好的产品
- python - 在 Altair 中生成“闪避”或“并排”条形图/柱形图?
- android - 如何防止像apkpure这样的网站?
- c++ - 具有自定义比较规则的多重集。当调用 multiSetObject.count() 有编译错误?
- ios - 横向全屏中的 Tabview
- java - 通过覆盖方法修复使用 Nimbus 或 GTK LookAndFeeel 时 JTextPane 的背景错误颜色