解决错误:dataLayer未定义

19

我已经创建了Google Tag Manager数据层变量并发布了容器。当我访问页面时,在Chrome控制台中出现错误。

dataLayer is not defined

数据层推送脚本在HEAD元素中,GTM代码片段在Body标签中。


1
你是否在未定义 dataLayer 的情况下尝试进行 dataLayer.push 操作?让我们看看你的代码... - nyuen
数据层推送脚本位于HEAD元素中,GTM代码片段位于Body标记中。 - Sofia Khwaja
1
好的,但是它看起来像什么?你是否正在执行 window.dataLayer = window.dataLayer || [] - nyuen
2个回答

41

如果您想使用dataLayer,则需要确保在使用它之前已经定义:

window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
   'someKey': 'someValue'
})

// GTM Container here

我觉得这个不太好。如果你没有dataLayer,可能是gtm的某些东西没有加载。这样你就会把数据推送到一个没有人读取的数组中。 - Haim

0

对于未定义的数据层错误,我们可以采取最好的方式是将其放置在条件语句中,例如:

window && window.dataLayer && window.dataLayer.push({data:data});

希望这对你有所帮助:)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接