gpt4 book ai didi

javascript - 谷歌标签管理器变量数据层自定义javascript未定义

转载 作者:行者123 更新时间:2023-11-28 18:07:01 25 4
gpt4 key购买 nike

我需要在数据层中编写自定义 JavaScript 的帮助。我正在尝试获取名字。

促销印象:

{
event: 'promoImp',
ecommerce: {
promoView: {
promotions: {
142398:{
id: '142398',
name: 'sadr'
},
142312:{
id: '142312',
name: 'qas'
}
}
}
} },gtm.uniqueEventId: 470

我已经尝试过这个 JavaScript,但它返回未定义。当我在本地尝试这个时,它完美地返回名称。

function() {
var names = [];
for (promotion in ecommerce.promoView.promotions) {
names.push(ecommerce.promoView.promotions[promotion].name);
}
return names.join(); }

任何人都可以帮忙解决这个问题吗?提前致谢。

最佳答案

我猜您正在尝试直接从自定义函数中访问数据层。然而 dataLayer 不是一个 (JSON) 对象,它是一个对象数组。因此,您无法通过点表示法来寻址电子商务数据,您需要给出 dataLayer 数组元素的索引:

dataLayer[index].ecommerce.promoView.promotions

其中“index”是包含电子商务数据的 dataLayer 元素的索引。现在显然这会很糟糕(特别是因为索引可能并不总是相同,具体取决于您按顺序推送到数据层的内容),因此有一种更好的方法。

在它的内部数据模型中(不可避免的 Simo Ahava has written a lot about this )GTM 将 dataLayer 元素扁平化为单个对象。您不会直接访问此数据模型,而是使用 dataLayer 类型的变量:

enter image description here

现在在您的自定义函数中使用它:

function() {
var names = [];
for (promotion in promotions) {
names.push(promotions[promotion].name);
}
return names.join();
}

未经正确测试,因此该功能可能需要调整,但基本上这就是正确的方法。

关于javascript - 谷歌标签管理器变量数据层自定义javascript未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42368814/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com