google Analytics:datalayer.push不使用一系列变量?

问题描述 投票:0回答:3

我想知道为什么gtag.js将变量而不是“参数”推向数据层数阵列时不起作用?这是一些代码示例:
window.dataLayer = window.dataLayer || []

function gtag(first: any, second: any) {
    window.dataLayer.push([first, second])
}

gtag('js', new Date())
gtag('config', trackingCode)

当我用'gronguments'
typescript google-analytics arguments google-analytics-api gtag.js
3个回答
3
投票

,最后,此版本的代码对我来说很好,没有衬里错误:
window.dataLayer = window.dataLayer || []

function gtag(..._args: unknown[]) {
    window.dataLayer.push(arguments)
}

gtag('js', new Date())
gtag('config', trackingCode)

1
投票

我们不知道您要通过覆盖
gtag
函数来实现什么,因此我们无法回答有关什么和没有什么的特定问题。

可以说的是:

"works"

是一个对象

gtm期望从
arguments中进行一个对象,因此为什么要遵循预期的设计(而
dataLayer.push
是一个数组,因此不是)。
注意,
[first, second]

呼唤自己“ works”



enter image description here无论您将无法通过GTM读取该数据,如上所述,该数据期望通过对象。

如果您想以免费的方式使用Datalayer,则可以使用GTM DataLayer助手: https://github.com/google/data-layer-helper



这确实通过

META命令支持数组语法:
push

默认情况下,默认情况下不支持读取此数据

(GTM再次期望一个对象,因此可以根据对象属性提取值),因此要通过GTM读取该数据,您需要在GTM标签和变量中使用DataLayer助手。 this是,在某些情况下,GTM检查了

.push
中的“对象”是该代码在官方中支持的一个实例。
dataLayer.push(['abc.push', 4, 5, 6]);

您可能想在页面顶部声明这样的内容。 dataLayer

然后,当您需要传递数组时,您可以致电

0
投票
Arguments

,否则,您只需将对象直接推入
https://www.googletagmanager.com/gtag/js?id=...
function lb(a){return!!a&&(Object.prototype.toString.call(a)==="[object Arguments]"||Object.prototype.hasOwnProperty.call(a,"callee"))}

这种方法似乎确实有效
    

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.