我正在使用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"}
// ]发布于 2019-07-10 16:57:25
简而言之,感谢@IskandarRezaRazali的评论,它工作正常,但我应该使用window.google_tag_manager["GTM-XXXXXX"].dataLayer.get('message') (它总是给你最新的条目)来检索值,而不是试图通过索引或执行Array.find`来访问它。
发布于 2019-07-10 17:00:42
史蒂文
看来您在语句中遗漏了单引号的使用。谷歌在文档中说
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
https://stackoverflow.com/questions/56957528
复制相似问题