我可以用 gtag() 替换 dataLayer.push() 吗?

Ulf*_*lfR 17 google-analytics google-tag-manager

dataLayer.push()在尝试实现和理解 Google 标签管理器和 Google Analytics 的使用时,我想知道为什么在某些地方谈论,而在其他地方gtag()用于类似的操作。尽管结果并不完全相同,但它们似乎服务于相同的目的。

gtag()定义为:

function gtag(){dataLayer.push(arguments)};
Run Code Online (Sandbox Code Playgroud)

如果我尝试使用 gtag 时的代码,我会得到一个包装参数对象。所以我明白这是有区别的,但这有关系吗?它们应该用于不同的目的吗?

> dataLayer = []
> dataLayer.push({'event','login'})
[{'event','login'}]
> dataLayer = []
> gtag({'event','login'})
[Arguments({'event','login'})]
Run Code Online (Sandbox Code Playgroud)

什么时候应该使用其中之一,或者我可以决定只使用其中之一?

Pet*_*ton 14

嗯,没有什么区别。gtag()只是一个 JS 函数的包装器dataLayer.push()。然而,gtag是优选的。

使用的原因gtag是为了避免任何可能污染或dataLayer意外更改对象内部数据的操作,从而影响分析数据。

从技术上讲,它们是相同的,您可以使用任何一种方式。

就我个人而言,在标记事件时,我通常创建自己的函数:

// definition
function gevent(name, data) { 
    gtag('event', name, data);
}

// sample
gevent('level_up', { userId: 123, prevLevel: 12, currLevel: 13 });
gevent('logout', { userId: 123 });
Run Code Online (Sandbox Code Playgroud)