0

我正在使用 Google Optimize 运行一些 A/B 测试,并试图从我的应用程序中更新 dataLayer 中的值,但不是更新它,而是添加一个新对象。根据文档,如果密钥已经存在,它应该更新。

我错过了什么吗?

例如:

// initiate dataLayer at the top of <head>
window.dataLayer = [{
  message: ""
}];

// later after some stuff loaded
window.dataLayer.push({message: 'Test message'});

console.log(window.dataLayer) // added instead of updated
// [
//   {message: ""},
//   {message: "test"}
// ]
4

2 回答 2

0

简而言之,感谢@IskandarRezaRazali 的评论,它工作正常,但我应该一直使用window.google_tag_manager["GTM-XXXXXX"].dataLayer.get('message')(它总是会给你最新的条目)来检索值,而不是尝试通过索引访问它或不得不做 Array.find` .

于 2019-07-10T08:57:25.350 回答
0

史蒂文

看起来你错过了在你的声明中使用单引号。在文档中谷歌说

dataLayer.push({new-variable: 'value'});      // Won't work

反而

dataLayer.push({'new-variable': 'value'});    // Better

看看下面的代码

<script>
  dataLayer = [];
  dataLayer.push({'message' : 'Test message'});
</script>

您可以在此处阅读文档 - https://developers.google.com/tag-manager/devguide

于 2019-07-10T09:00:42.490 回答