Google Anlaytics async tracking snippet的含义是什么?

时间:2018-06-15 11:31:06

标签: javascript google-analytics

Google在" Adding analytics.js to Your Site"中提供以下代码段:导:

list.stream().collect(Collectors.toMap(IMyInterface::getUniqueName(), i -> i));

这段代码是否初始化了Google Analytics?怎么样?

2 个答案:

答案 0 :(得分:4)

让我们分解

window.ga=

将变量分配给windows对象上的ga

window.ga||function(){...}

由于短路,这将分配现有的window.ga或调用该功能。这可以被认为是:

if(!window.ga){
    window.ga = function(){...}
}

(ga.q=ga.q||[])

如上所述,使用短路将数组分配给ga.qwindows.ga.q)(如果尚不存在)。然后push arguments到此数组。所以ga最终成为push将参数放入数组的函数。

然后

ga.l=+new Date;

使用unary operator将日期(ga.l=)指定为数字(+new Date)。

因此,此代码最终创建一个对象ga,其中的函数在首次调用(q)时创建一个空数组,然后将arguments推送到此数组。它还会创建日期整数(l)。

代码已被缩小以使其在一行上并减小其大小。它也是以这样的方式编写的:如果一个对象已经存在,它就不会被覆盖。

为什么?我认为@Patricks answer covers that

答案 1 :(得分:3)

是和否 - 它是Google Analytics初始化的一部分,但不是全部。

它的作用是检查GA库是否已经加载(通过异步脚本标记)。如果没有,它会创建一个数组(ga.q),用于缓存在加载库之前创建的所有跟踪事件。

加载GA完成后,库会处理这些排队的跟踪事件。