在我的javascript文件中插入Google分析脚本

时间:2018-05-05 21:35:49

标签: javascript optimization google-analytics

我的html文件的javascript部分看起来像这样:

<script async src="myscript.js"></script>
<script async src="//www.googletagmanager.com/gtag/js?id=UA-XXXXXX-X"></script>
<script>window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments);}gtag('js',new Date());gtag('config','UA-XXXXXX-X');</script>

我不是一个真正的JavaScript专家。所以,我真的不明白最后一个脚本在做什么。我想知道是否可以将此代码复制并粘贴到我的myscript.js中以节省几个字节?

让我困扰的是我的脚本的“异步”属性。是否必须在页面开头执行这部分谷歌分析脚本?

我已经阅读了很多关于这个主题的问题和答案,但没有一个让我清楚地理解。其中大多数是关于以前的分析脚本,而不是这个。

1 个答案:

答案 0 :(得分:1)

// Checks if window.dataLayer already defined. If defined, use that array else creates an empty array.
window.dataLayer=window.dataLayer||[];
//This functions add elements to the above defined array. This array is used by the google analytics script defined at the top.
//arguments is a javascript keyword to fetch all arguments passed to a function as an array.
function gtag(){
 dataLayer.push(arguments);
}
//gtag called with arguments ['js', <current date>]
gtag('js',new Date());
//gtag called with arguments ['config', <token>]
gtag('config','UA-XXXXXX-X');

最终结果将是:

datalayer=[
['js', <current date>],
['config', <token>]
]

您的数据层应该在gtag脚本调用之前定义,如果不是,它可能不起作用。此链接很好地解释了link1link2。因此,将数据层保留在异步脚本中将不可靠,因为它无法保证您的脚本将在gtag脚本之前执行。