【发布时间】:2019-10-07 09:56:59
【问题描述】:
我有 GTM 自定义 HTML 标记,它拦截页面上调用的 dataLayer.push,检查它是否存在电子商务,如果检测到它,则将电子商务数据发送到再营销像素。
现在我正在尝试将此标签包装在 GTM 自定义模板中。 为此,我需要从我的 GTM 自定义模板中创建一个 dataLayer.push。
我研究了官方文档:
https://developers.google.com/tag-manager/templates/api#createqueue
有一个使用 GTM Sandbox JavaScript 的 dataLayer.push 方法示例:
const dataLayerPush = createQueue('dataLayer');
dataLayerPush({'event': 'test_push'});
但如果我运行示例中的代码,我会得到以下结果:
dataLayer
(6) [{…}, {…}, lj, {…}, {…}, {…}, push: ƒ]
0: {pageType: "main"}
1: {gtm.start: 1570440507302, event: "gtm.js", gtm.uniqueEventId: 2172}
2: lj
fi:
event: "test_push"
gtm.uniqueEventId: 7689
__proto__: Object
__proto__: Object
3: {event: "gtm.dom", gtm.uniqueEventId: 13084}
4: {event: "productImpression", ecommerce: {…}, gtm.uniqueEventId: 18479}
5: {event: "gtm.load", gtm.uniqueEventId: 24517}
push: ƒ ()
length: 6
__proto__: Array(0)
如您所见,dataLayer[2] 不是我的推动力。
什么是'lj'?
什么是'fi'?
如果我尝试使用不同的名称(不是“dataLayer”)创建另一个全局数组,一切正常:
const newDataLayerPush = createQueue('newDataLayer');
newDataLayerPush ({'event': 'test_push'});
输出:
[{…}]
0: {event: "test_push"}
length: 1
__proto__: Array(0)
如何使用 GTM 自定义模板向 dataLayer 发送推送?
【问题讨论】:
-
你解决了这个问题吗?
标签: javascript google-tag-manager