dataLayer.push 正在添加新项目而不是更新现有项目
dataLayer.push is adding a new item instead of updating an existing one
我正在 运行 使用 Google 优化进行一些 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"}
// ]
简而言之,感谢@IskandarRezaRazali 的评论,它工作正常,但我应该一直使用 window.google_tag_manager["GTM-XXXXXX"].dataLayer.get('message')
(它将始终为您提供最新条目)来检索值而不是尝试访问它通过索引或必须做 Array.find`.
史蒂文,
您似乎没有在声明中使用单引号。在文档中 Google 说
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
我正在 运行 使用 Google 优化进行一些 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"}
// ]
简而言之,感谢@IskandarRezaRazali 的评论,它工作正常,但我应该一直使用 window.google_tag_manager["GTM-XXXXXX"].dataLayer.get('message')
(它将始终为您提供最新条目)来检索值而不是尝试访问它通过索引或必须做 Array.find`.
史蒂文,
您似乎没有在声明中使用单引号。在文档中 Google 说
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