我的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中以节省几个字节?
让我困扰的是我的脚本的“异步”属性。是否必须在页面开头执行这部分谷歌分析脚本?
我已经阅读了很多关于这个主题的问题和答案,但没有一个让我清楚地理解。其中大多数是关于以前的分析脚本,而不是这个。
答案 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脚本调用之前定义,如果不是,它可能不起作用。此链接很好地解释了link1和link2。因此,将数据层保留在异步脚本中将不可靠,因为它无法保证您的脚本将在gtag脚本之前执行。