В документации Google Analytics предлагается, чтобы window.dataLayer
заполнялось после / ниже тега сценария удаленного кода.
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=GA_MEASUREMENT_ID"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'GA_MEASUREMENT_ID');
</script>
Однако в документации Google Tag Manager предлагается другой способ, где window.dataLayer
заполняется до / над тегом сценария удаленного кода
.
<script>
dataLayer = [{
'pageCategory': 'signup',
'visitorType': 'high-value'
}];
</script>
<!-- Google Tag Manager -->
...
<!-- End Google Tag Manager -->
Почему разница?
Код Google Analytics кажется особенно странным, поскольку кажется, что логика связана с атрибутом async
в удаленном скрипте, что означает, что он может выполняться до или после заполнения dataLayer
. Почему бы просто не заполнить dataLayer
так же, как для диспетчера тегов?